WPF - Global Style?

Is there a way to setup global styles for my WPF application?

What I'm hoping to do is apply a style to all my Buttons that also have an Image child.

22
задан Oliver 16 January 2013 в 11:57
поделиться

3 ответа

Ну, вроде того, что вы можете применить универсальный подход — поместите следующий элемент в ваш 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"/>

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

В качестве альтернативы можно использовать Темы – подробнее об этом здесь.

28
ответ дан 29 November 2019 в 05:00
поделиться

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

3
ответ дан 29 November 2019 в 05:00
поделиться

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

, например,

<Style TargetType="Button">

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

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

5
ответ дан 29 November 2019 в 05:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: