WPF - Global Style?

Sonny Boy picture Sonny Boy · Aug 25, 2010 · Viewed 27.9k times · Source

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.

Answer

Goblin picture Goblin · Aug 25, 2010

Well, sort of - it's a catch-all approach you can do - put the following element in your App.xaml - all your buttons will change (except the ones you apply a style to, manually).

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

However, if you want to hit only buttons with images - you have to inherit from Button everytime you do and then apply a style like this:

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

It is a very coarse-grained global styling - and you need to follow the convention to make it work.

An alternative is to use Themes - read more about that here.