Как настроить таргетинг на все элементы управления (стили WPF)

Можно ли указать стиль, который применяется ко всем элементам? Я попробовал

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

Но ничего не сделал

Ответ 1

Созданный Style предназначен только для таргетинга Control, а не для элементов, полученных из Control. Если вы не установили x:Key, он неявно установлен в TargetType, поэтому в вашем случае x:Key="{x:Type Control}".

Нет прямого способа указать Style, который предназначен для всех элементов, которые выводятся из TargetType Style. У вас есть другие варианты.

Если у вас есть следующий Style

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

Вы можете настроить таргетинг на все Buttons например

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

или используйте стиль непосредственно на любом элементе, например. Button

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