How to target all controls (WPF Styles)

Jiew Meng picture Jiew Meng · Nov 9, 2010 · Viewed 35.5k times · Source

Can I specify a style that applies to all elements? I tried

<Style TargetType="Control">
    <Setter Property="Margin" Value="0,5" />
</Style>

But it did nothing

Answer

Fredrik Hedblad picture Fredrik Hedblad · Nov 9, 2010

The Style you created is only targeting Control and not elements that derive from Control. When you don't set the x:Key it's implicitly set to the TargetType, so in your case x:Key="{x:Type Control}".

There isn't any direct way to specify a Style that targets all elements that derive from the TargetType of the Style. You have some other options.

If you have the following Style

<Style x:Key="ControlBaseStyle" TargetType="{x:Type Control}">
    <Setter Property="Margin" Value="50" />
</Style>

You can target all Buttons for example

<Style TargetType="{x:Type Button}" BasedOn="{StaticResource ControlBaseStyle}"/>

or use the style directly on any element, e.g. Button

<Button Style="{StaticResource ControlBaseStyle}" ...>