在 WinRT/UWP 应用中(该问题在两个平台上都出现),我可以定义一个样式,适用于某个控件的所有实例,通过省略
现在,除了默认样式之外,我想对一些按钮应用特定属性:
问题在于:作为“BasedOn”属性填写什么,以便该样式继承上面定义的默认样式?
在WPF中,我可以执行以下操作:
然而,在这种情况下,
有没有办法实现以下两种方式之一:
x:Key
属性来实现,例如:<Style TargetType="Button">
<Setter Property="Width" Value="400"/>
</Style>
现在,除了默认样式之外,我想对一些按钮应用特定属性:
<Style TargetType="Button" x:Key="TallButtonStyle" BasedOn="...">
<Setter Property="Height" Value="100"/>
</Style>
问题在于:作为“BasedOn”属性填写什么,以便该样式继承上面定义的默认样式?
在WPF中,我可以执行以下操作:
<Style TargetType="Button" x:Key="..." BasedOn="{StaticResource {x:Type Button}}">
然而,在WinRT / UWP上不支持x:Type
。正如此答案所建议的那样,我需要为默认样式指定一个x:Key
,以便能够从中继承:
<Style TargetType="Button" x:Key="WideButtonStyle">
<Setter Property="Width" Value="400"/>
</Style>
<Style TargetType="Button" x:Key="TallButtonStyle" BasedOn="{StaticResource Button}">
<Setter Property="Height" Value="100"/>
</Style>
然而,在这种情况下,
WideButtonStyle
不再作为默认样式使用,我需要手动将 Style="{StaticResource WideButtonStyle}"
应用于所有按钮,这看起来是不必要的开销。有没有办法实现以下两种方式之一:
- 将样式的
BasedOn
属性设置为指向相应控件的默认样式,或 - 设置包含
x:Key
属性的样式,以便作为给定类型的所有控件的标准样式使用?