Как создать скины для графического интерфейса в WPF?
Мне было интересно, как я должен идти о создании пользовательских настроек для всех цветовых схем и тому подобное. Я знаю, что могу создавать стили для отдельных компонентов или деталей... но как мне создать набор скинов?
например, сейчас я использую градиентную кисть бордового цвета во многих субконтролях. Тем не менее, я уверен, что люди, кроме меня, будут ненавидеть цветовую схему.
Я знаю, что могу создать свойство зависимости в своем элементе управления верхнего уровня для цвета и затем связать отдельные части, которым нужен этот цвет, с этим свойством зависимости. Тем не менее, должно быть много свойств. Должен ли я просто создать отдельный объект стиля, который содержит все эти свойства, и поместить его в качестве поля в моем пользовательском элементе управления?
Мне просто интересно, есть ли другие способы сделать это в WPF. Например, я думаю, что может быть какой-то способ сделать это в xaml или использовать некоторые встроенные классы в библиотеках по умолчанию.
1 ответ
Вы можете сделать это, создав новый словарь ресурсов и определив там цвета и шаблоны элементов управления для своих элементов управления.
Пример вы можете найти в проекте WPF Themes ( ссылка для скачивания).
Вы можете изменить свой стиль, изменив словарь ресурсов, например:
<Application x:Class="ThemesSample.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="Window1.xaml">
<Application.Resources>
<ResourceDictionary Source="ExpressionDark.xaml"/>
</Application.Resources>
</Application>
Если вы хотите изменить тему во время выполнения, вы должны использовать следующий код:
ResourceDictionary dict = new ResourceDictionary();
dict.Source = new Uri("BureauBlack.xaml", UriKind.Relative);
this.Resources.MergedDictionaries.Add(dict);