Могу ли я указать стиль, применимый ко всем элементам? Я старался
<Style TargetType="Control">
<Setter Property="Margin" Value="0,5" />
</Style>
Но это ничего не дало
Ответы:
Созданный 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}" ...>
Как ответил Фредрик Хедблад, вы можете воздействовать на все элементы, унаследованные от управления.
Но вы не можете применить стиль, например, для текстового блока и кнопки с одним и тем же стилем.
для этого:
<Style x:Key="DefaultStyle" TargetType="{x:Type FrameworkElement}">
<Setter Property="Control.Margin" Value="50"/>
</Style>
<Style TargetType="TextBlock" BasedOn="{StaticResource DefaultStyle}"/>
<Style TargetType="Button" BasedOn="{StaticResource DefaultStyle}"/>
FrameworkElement
не применялся ко всем моим элементам управления - это ответило на этот вопрос!