2013-08-03 10 views
3

Мне было интересно, как мне нужно создавать пользовательские настройки для всех цветовых схем и т. Д. Я знаю, что могу создавать стили для отдельных компонентов или частей ... но как мне создать набор скинов?Как создать скины для графического интерфейса в WPF?

например, прямо сейчас я использую цветную градиентную краску в коричневом цвете во множестве субконтроля. Тем не менее, я уверен, что люди, кроме меня, будут ненавидеть цветовую схему.

Я знаю, что я могу создать свойство зависимости на моем верхнем уровне управления цветом, а затем привязать отдельные части, которые нуждаются в этом цвете для этого свойства зависимостей. Однако, должно быть много свойств. Должен ли я просто создать отдельный объект стиля, содержащий все эти свойства, и поместить его в качестве поля в свой пользовательский элемент управления?

Мне просто интересно, есть ли другие способы сделать это в WPF. Например, я предполагаю, что может быть какой-то способ сделать это в xaml или использовать какой-либо встроенный класс в библиотеках по умолчанию.

ответ

2

Вы можете сделать это, создав новый словарь ресурсов и определив там цвета и управляющие шаблоны для своих элементов управления.

пример можно найти в WPF Themes проект (download link).

Вы можете изменить свой стиль, изменив словарь ресурсов, например:

<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); 
+0

Я предполагаю, что я задаюсь вопросом, является ли есть какой-либо способ переключить каталоги ресурсов в xaml, или я должен сделать это в коде позади, если я хочу, чтобы иметь возможность смещать стили во время выполнения. Мне также любопытно, находится ли это место где MVVM входит, и вы определяете новое представление, которое имеет разные стили, определенные или что-то в этом роде. –

+1

@JamesJoshuaStreet, если вы хотите изменить стиль во время выполнения, вы должны сделать это в коде позади. Если ваш вид имеет другой стиль, вы можете добавить для просмотра соответствующего стиля ресурсов, используя MergedDictionaries. – kmatyaszek

 Смежные вопросы

  • Нет связанных вопросов^_^