Различия между библиотекой пользовательских элементов управления WPF и простой библиотекой классов? - PullRequest
5 голосов
/ 18 января 2010

Несколько месяцев назад я опубликовал вопрос о совместном использовании словарей ресурсов между сборками . Оказывается, вы можете сделать это, используя расширение разметки Key Component Resource Key. В то время я мог заставить его работать только с проектом пользовательского элемента управления WPF, а не с простым проектом библиотеки классов.

Теперь мне нужно использовать существующий простой проект библиотеки классов для размещения словаря общих ресурсов. Это означает, что мне нужно модернизировать проект библиотеки классов для поддержки расширения разметки ключа ресурса компонента. Я добавил папку Темы и документ словаря ресурсов Generic.xaml в проект библиотеки классов, а также ссылки на PresentationCore, PresentationFramework и WindowsBase. К сожалению, похоже, это не помогает.

Итак, вот мой вопрос: кроме вышеупомянутого, что есть у проекта библиотеки пользовательских элементов управления WPF, чего нет у простого проекта библиотеки классов? Или, другими словами, что еще можно добавить в проект библиотеки классов, чтобы эта функция работала? Спасибо.

Ответы [ 3 ]

6 голосов
/ 19 января 2010

Помимо дополнительных ссылок WPF, шаблон библиотеки пользовательских элементов управления WPF имеет дополнительный атрибут в AssemblyInfo.

[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 указывает место, в котором словари тем хранятся для типов в сборке.

2 голосов
/ 13 января 2012

Другое отличие заключается в файле .csproj:

В классе Library тег отсутствует:

<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

После добавления его в первую PropertyGroup в меню добавления проекта теперь отображаются типичные файлы WPF.

1 голос
/ 19 января 2010

Кэмерон Макфарланд ответил точно.Я сейчас проверил это, и это работает.

Вот решение: Добавьте ссылки на DLL и файл Themes / generic.xaml в простой проект библиотеки классов.Затем откройте AssemblyInfo.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)
)]

Перекомпилируйте, и расширение разметки ключа ресурса компонента должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...