我可以指定适用于所有元素的样式吗?我试过了
<Style TargetType="Control">
<Setter Property="Margin" Value="0,5" />
</Style>
但它没有做任何事情
答案 0 :(得分:98)
您创建的Style
仅定位Control
,而不是Control
派生的元素。如果您未将x:Key
设置为隐式设置为TargetType
,那么在您的情况下x:Key="{x:Type Control}"
。
没有任何直接方法可以指定Style
,其定位来自TargetType
的{{1}}的所有元素。你还有其他选择。
如果您有以下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
答案 1 :(得分:2)
正如Fredrik Hedblad所说,你可以影响从控制中继承的所有元素。
但是你不能为文本块和按钮应用相同样式的样式。
这样做:
<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}"/>