Я отправил вопрос несколько месяцев назад о совместном использовании словарей ресурса через блоки. Оказывается, что можно сделать то использование расширения разметки Ключа Ресурса Компонента. В то время я мог только получить его работающий с проектом Пользовательского элемента управления WPF, не с простым проектом Библиотеки классов.
Теперь я должен использовать существующий простой проект Библиотеки классов разместить словарь совместно используемого ресурса. Это означает, что я должен модифицировать проект Библиотеки классов поддерживать расширение разметки Ключа Ресурса Компонента. Я добавил папку Themes и документ словаря ресурса Generic.xaml проекту Библиотеки классов, а также ссылки на PresentationCore, PresentationFramework и WindowsBase. К сожалению, это, кажется, не добивается цели.
Так, вот мой вопрос: Кроме вышеупомянутого, что делает проект Библиотеки Пользовательского элемента управления WPF, имеют это, простой проект Библиотеки классов не делает? Или, другими словами, что еще я мог добавить к своему проекту библиотеки классов получить эту работу функции?Спасибо.
Помимо дополнительных ссылок WPF, WPF Шаблон пользовательской библиотеки контроля имеет дополнительный атрибут в AssessionInfo.
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
//(used if a resource is not found in the page,
// or application resource dictionaries)
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
//(used if a resource is not found in the page,
// app, or any theme specific resource dictionaries)
)]
Themeinfoattribute Определяет местоположение, в котором словари темы хранятся для типов в сборке.
Ответ Камерона Макфарланда был на месте. Теперь я проверил это, и это работает.
Вот решение: добавьте DLL Refs и файл Themes / Generic.xaml в проект библиотеки обычного класса. Затем откройте AssuaseInfo.cs и добавьте следующий код в конце файла:
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
//(used if a resource is not found in the page,
// or application resource dictionaries)
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
//(used if a resource is not found in the page,
// app, or any theme specific resource dictionaries)
)]
Recompile, и расширение разметки ключа ресурсов компонента должна работать.