Я сделал несколько ResourceDictionaries
для нашей команды разработчиков, чтобы использовать их в своих будущих приложениях. Я развернул содержимое проекта библиотеки классов, содержащего эти словари, в файл .dll и хотел бы иметь возможность использовать словари, добавив ссылку на файл .dll в новом решении WPF, в котором я надеюсь создать новое приложение. .
Библиотека классов в моем примере называется «NWF_Class_Library.dll» и сохраняется в той же папке в проводнике Windows, что и файл MainWindow.xaml
. Можно ли получить из него словари ресурсов?
Я читал статьи о том, как лучше всего организовать доступ к ресурсам устроить их xaml, поэтому кажется, что это возможно, но все, что я нахожу, - это способы использования синтаксиса «// pack: application: ...» для ссылки на xaml в том же решение как приложение wpf. Вот фрагмент кода с пустым исходным кодом, потому что ничего из того, что я написал, не сработало!
Мы надеялись, что сможем добавить стандартные конфигурации, а также наши более обычные полезные методы и т. д. В файл, который можно будет развернуть с приложениями.
<Window x:Class = "dll_ref_included.MainWindow"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d = "http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable = "d"
Title = "MainWindow" Height = "450" Width = "800">
<Window.Resources>
<ResourceDictionary Source = ""/>
</Window.Resources>
<Grid>
<Button Style = "{StaticResource myButton}">This</Button>
</Grid>
</Window>
Попробуй это:
<ResourceDictionary Source = "pack://application:,,,/NWF_Class_Library;component/Dictionary1.xaml"/>
... где «NWF_Class_Library» - это имя указанной сборки, а «Dictionary1.xaml» - это имя ResourceDictionary
, которое определено в этом проекте.
Вы можете обратиться к документация для получения дополнительной информации об URI пакетов и о том, как их использовать.
Невероятный! Я уже пробовал этот синтаксис и получил сообщение об ошибке в дизайнере An error occurred while finding the resource dictionary "pack://application:,,,/NWF_Class_Library;component/WPF Resources/Buttons.xaml".
, но когда я игнорирую ошибку и все равно запускаю ее (чего я не делал раньше), мне предоставляется идеальная кнопка! Что за черт?!
Дизайнер немного глючит и не может справиться со всеми сценариями. Имеет значение поведение во время выполнения. Вы можете вообще отключить дизайнер: stackoverflow.com/questions/10481645/disable-xaml-ui-designe r
Господи, столько времени потрачено на это! Я почти начал изучать xaml и был так уверен, что правильно владею синтаксисом; просто никогда не нажимал F5, когда выдавал ошибку! Я знаю, что в следующий раз нужно исправить ошибки дизайнера, добавив больше приправ - я посмотрю, сделает ли Blend то же самое; было бы жаль не видеть формы в момент их конструирования ...
Microsoft Blend правильно показывает предварительный просмотр - я воспользуюсь им. Мужчина! Столько потерь! Спасибо.
Это возможно с синтаксисом "// pack: application: ...". Вы можете указать строгое имя сборки и имя ресурса, которые хотите использовать. Насколько мне известно, эта сборка должна быть загружена в ваш текущий AppDomain (добавлена в ссылку на ваш проект или вручную).