Как создать скины для графического интерфейса в 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);
Другие вопросы по тегам