Как вы ссылаетесь на XAML DictionaryResource из внешней сборки? - PullRequest
1 голос
/ 30 ноября 2011

Я настоящий Нуби в мире WPF. Я только начинаю погружаться в это.

У меня проблема, которую я пытаюсь решить с помощью ResourceDictionary и Merged Dictionaries.

У меня есть пример приложения WPF, который я преобразовал в библиотеку классов. Эта недавно преобразованная сборка включена / указана в библиотеке пользовательских элементов управления, которые я пытаюсь создать. Эта преобразованная сборка входит в проект, содержащий мой проект библиотеки пользовательских элементов управления (dll).

Я смог успешно преобразовать его и избавился от всех ошибок, за исключением некоторых проблем с ResourceDictionary.

Вот как выглядит оскорбительный XAML:

<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/ConvertedAppPath/Dictionaries/Brushes.xaml" />
                <ResourceDictionary Source="/ConvertedAppPath/Dictionaries/Styles.xaml" />
<ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

Исходное приложение WPF содержало несколько элементов словаря ресурсов, включенных в сборку.

Когда я преобразую в библиотеку классов, я получаю следующее сообщение об ошибке в словаре ресурсов:

Ошибка 21 Произошла ошибка при поиске словаря ресурсов "/ConvertedAppPath/Dictionaries/Brushes.xaml". C: \ MyExplicitPath \ WPFUserControls \ DynamicDataChart.xaml 15 17 WPFUserControls Ошибка 22 Произошла ошибка при поиске словаря ресурсов «/ConvertedAppPath/Dictionaries/Styles.xaml». C: \ MyExplicitPath \ WPFUserControls \ DynamicDataChart.xaml 15 17 WPFUserControls

Итак, я подумал, что, возможно, мне нужен относительный путь для ResourceDictionaries.

<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="../ConvertedAppPath/Dictionaries/Brushes.xaml" />
                <ResourceDictionary Source="../ConvertedAppPath/Dictionaries/Styles.xaml" />
<ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

Я получаю следующие сообщения об ошибках в редакторе XAML:

Файл "../ConvertedAppPath/Dictionaries/Brushes.xaml" не является частью проекта или его свойство Build Action не имеет значения "Resource".

Мне бы очень хотелось это понять, поэтому у меня есть пара вопросов:

1) Как мне почистить это, чтобы избавиться от ошибок?

2) Нужно ли явно указывать расположение сборки в "Source"?

3) Каковы все составляющие свойства «Источник» и что они на самом деле означают?

4) Почему второе сообщение об ошибке не отображается во время компиляции, а отображается только в редакторе XAML?

Спасибо за ваш ответ и усилия, JohnWPFNewB

1 Ответ

0 голосов
/ 30 ноября 2011

убедитесь, что в свойствах '/ConvertedAppPath/Dictionaries/Brushes.xaml' установлено 'копировать всегда'

Поскольку при запуске проекта Brushes.xaml следует копировать в тот же каталог с вашим project.exe, что и файлпуть, который указан в xaml (/ConvertedAppPath/Dictionaries/Brushes.xaml)

...