我知道如果您不指定x:Key
属性,则可以设置默认样式。 (因此它适用于TargetType
)
我想使用密钥进行继承(BasedOn
属性),但仍保持默认值。
我想创造另一种基于前一种风格的风格。像这样:
<Style TargetType="Button" x:Key="name">
//...
</Style >
<Style TargetType="Button" BasedOn="name"/>
但如果有更简洁的方法,我会更喜欢它。
答案 0 :(得分:2)
您可以使用 {x:Type} 标记扩展名设置其名称:
<Style TargetType="{x:Type Button}" x:Key="{x:Type Button}">
<Setter Property="Background" Value="Red"/>
</Style>
这种方式它仍然是隐式样式,但您现在可以继承它。
这是一份完整的工作样本:
<Window.Resources>
<Style TargetType="{x:Type Button}" x:Key="{x:Type Button}">
<Setter Property="Background" Value="Red"/>
</Style>
<Style x:Key="AnotherStyle" TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="FontSize" Value="22"/>
</Style>
</Window.Resources>
<Grid Background="DimGray" Name="Grid" DataContext="{Binding ExpandoObject}">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Button Grid.Row="1" Content="LOL" Style="{StaticResource AnotherStyle}"/>
</Grid>
修改强> 如下面所述,您不需要设置x:Key,因为您可以使用x:仅键入
来访问它答案 1 :(得分:-1)
您使用StaticResource:
<Style TargetType="Button" x:Key="name">
//...
</Style >
<Style TargetType="Button" BasedOn="{StaticResource name}">
//...
</Style >