WPF - Глобальный Стиль? - PullRequest
       6

WPF - Глобальный Стиль?

19 голосов
/ 26 августа 2010

Есть ли способ настроить глобальные стили для моего приложения WPF?

Я надеюсь применить стиль ко всем моим кнопкам, у которых также есть дочерний элемент Image.

Ответы [ 3 ]

27 голосов
/ 26 августа 2010

Ну, вроде - это универсальный подход, который вы можете сделать - поместите следующий элемент в ваш App.xaml - все ваши кнопки будут изменены (кроме тех, к которым вы применяете стиль, вручную).

<Style TargetType="{x:Type Button}">
    <Setter Property="Background" Value="LightPink"/> <!-- You should notice that one... -->
</Style>

Однако, если вы хотите нажимать только кнопки с изображениями - вам нужно наследовать от Button каждый раз, когда вы делаете, а затем применять стиль, подобный следующему:

public class CustomImageButton:Button{}
<Style TargetType="{x:Type local:CustomImageButton}">
    <Setter Property="Background" Value="LimeGreen"/>
</Style>
<local:CustomImageButton Content="ClickMe"/>

Это очень грубыйглобальное моделирование - и вам нужно следовать соглашению, чтобы оно заработало.

Альтернативой является использование тем - подробнее об этом здесь .

5 голосов
/ 26 августа 2010

Вы можете создавать неявные стили в WPF, которые применяются по типу

, например

<Style TargetType="Button">

Будет применяться ко ВСЕМ кнопкам в области действия этого стиля (если стильв App.XAML он будет применяться ко всем кнопкам, если он находится ниже в цепочке, он будет применяться ко всем кнопкам под ним)

Если вы хотите применить его только к определенным типам кнопок (скажем, кнопки изображений)тип, производный от кнопки (назовите его ImageButton), а затем создайте стиль, нацеленный на этот тип.

3 голосов
/ 26 августа 2010

Поместите стиль в тег ResourceDictionary внутри вашего App.xaml, и он будет применяться ко всему приложению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...