Я создаю проект библиотеки классов, который будет содержать пользовательские элементы управления WPF. Мое требование состоит в том, что все элементы управления имеют одинаковый стиль. Мой проект выглядит следующим образом:Использование стилей словаря ресурсов в моем проекте библиотеки классов без слияния словарей
Вещи, которые я сделал для того, чтобы решить эту проблему:
- Добавлена все ссылки, необходимые приложения WPF System.Xaml, WindowsBase и т.д .. так что я могу иметь элементы управления wpf в моем проекте библиотеки классов.
В AssemblyInfo.cs Я добавил:
[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
Добавлено ResourceDictionary1.xaml К проекту, добавив стиль.
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<SolidColorBrush x:Key="Brush1" Color="#FF19199E"/>
</ResourceDictionary>Теперь, если я хочу использовать стиль на моем UserControl1.xaml я:
<UserControl.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="ResourceDictionary1.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </UserControl.Resources> <Grid > <Rectangle Fill="{StaticResource Brush1}" /> </Grid>
Я знаю, что это горе rks отлично, но вот улов. Каждый раз, когда я создаю новый userControl, мне придется объединить словарь. В обычном WPF-приложении я мог бы просто объединить словарь один раз на App.xaml, и я смогу использовать этот словарь для всего моего приложения. Как я могу избежать слияния словаря каждый раз при создании нового userControl? Если я планирую добавить новый словарь ресурсов, мне придется перейти ко всем userControls и слить другой словарь. Может быть, я написал заголовок вопроса неправильно, и мой вопрос должен был, как я могу добавить App.xaml файл в проект библиотеки классов
Вы могли бы попытаться положить общие ресурсы для сборки в 'Themes \ Generic.xaml' словаря ресурсов (с Build Action установлен на«страницы»). Именно там WPF ожидает, что по умолчанию будут использоваться стандартные библиотеки, не зависящие от темы, поэтому эти ресурсы должны автоматически загружаться в ваше приложение. Как правило, этот файл фактически не объявляет никаких ресурсов, но использует «MergedDictionaries» для загрузки ресурсов из других файлов. –
Почему у вас нет проекта wpf в вашем решении и не добавляйте свою библиотеку классов в качестве ссылки. Оттуда вы можете сделать вызов в пользовательском или обычном окне в качестве стартового экрана –