2008-09-23 2 views
21

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

Что я могу использовать для выполнения этого типа функций? Есть ли хорошие ресурсы или учебные пособия, которые показывают, как эта конкретная задача может быть выполнена?

ответ

10

Основной подход к использованию - использование ресурсов через ваше приложение и динамическая замена ресурсов во время выполнения.

См http://www.nablasoft.com/alkampfer/index.php/2008/05/22/simple-skinnable-and-theme-management-in-wpf-user-interface/ для базового подхода

+0

Привет, Морис, обе эти ссылки теперь 404. Есть ли шанс найти некоторые замены? – Matt 2015-06-23 20:12:25

+0

@Matt https://web.archive.org/web/20130411050848/http://www.codewrecks.com/blog/index.php/2008/05/22/simple-skinnable-and-theme-management-in -wpf-user-interface – Xcodo 2015-07-23 10:44:56

4

замещающего ресурса будет работать, но я нашел «структурный свежеванье», чтобы быть более мощным! Подробнее об этом на CodeProject ...

http://www.codeproject.com/KB/WPF/podder1.aspx

+0

Старый вопрос и ответ, но, если я не ошибаюсь, кажется, что метод, упомянутый на этой странице, также полагается (по крайней мере частично) на динамические ссылки ресурсов. – 2012-11-02 12:51:00

2

Я нашел способ применить общие шаблоны для всех элементов управления без использования ключей шаблонов. Решение состоит в том, чтобы использовать тип элемента управления как клавишу Style.

Пример:

<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> 

здесь ключ Стиль х: Key = «{х: Кнопка Тип}», так что стиль будет применяться ко всем элементам управления кнопки типа без контроля объявляющего свойство Style быть статическим или динамическим ресурсом.

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