Каков рекомендуемый способ оформления всего приложения в WPF?
Вопрос
Я хочу, чтобы в моем приложении WPF можно было изменять скины путем применения определенного шаблона XAML, а изменения распространялись на все приложение, даже для динамических элементов управления или элементов управления, которых нет даже в визуальном/логическом дереве.
Что я могу использовать для выполнения такого типа функций?Есть ли какие-нибудь хорошие ресурсы или учебные пособия, показывающие, как можно выполнить эту конкретную задачу?
Решение
Основной подход заключается в использовании ресурсов во всем приложении и динамической замене ресурсов во время выполнения.
Видеть http://www.nablasoft.com/alkampfer/index.php/2008/05/22/simple-skinnable-and-theme-management-in-wpf-user-interface/ для базового подхода
Другие советы
Замена ресурса будет работать, но я обнаружил, что «структурное скиннинг» более эффективно!Подробнее об этом читайте на CodeProject...
Я нашел способ применить общие шаблоны ко всем элементам управления без использования ключей шаблона.Решение состоит в том, чтобы использовать тип элемента управления в качестве ключа стиля.
Пример:
<Application.Resources>
<Style x:Key="{x:Type Button}" TargetType="{x:Type Button}">
<Setter Property="Button.Background" Value="CornflowerBlue"/>
<Setter Property="Button.Template">
<Setter.Value>
<ControlTemplate x:Name="MyTemplate">
...
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Application.Resources>
здесь ключ стиля — x:Key="{x:Type Button}", поэтому стиль будет применен ко всем элементам управления типа button без того, чтобы элемент управления объявлял свойство Style статическим или динамическим ресурсом.