我可以指定一个应用于所有元素的样式吗?我试过了
<Style TargetType="Control">
<Setter Property="Margin" Value="0,5" />
</Style>
但它什么也没做
发布于 2010-11-09 21:08:14
您创建的Style
只针对Control
,而不针对从Control
派生的元素。如果不设置x:Key
,它将隐式设置为TargetType
,因此在本例中为x:Key="{x:Type Control}"
。
没有任何直接的方法可以指定一个Style
来指向从Style
的TargetType
派生的所有元素。你还有一些其他的选择。
如果您有以下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}" ...>
发布于 2018-05-03 06:11:24
正如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}"/>
https://stackoverflow.com/questions/4131034
复制相似问题