在我的项目中,有一个自定义样式的文本框。它被定义为:
<Style TargetType="TextBox"/>
默认情况下,它适用于所有文本框子控件。
我需要创建另一种基于默认样式的样式。但是如何在BasedOn属性中指定我的新样式应该使用默认样式?
答案 0 :(得分:59)
使用您想要扩展的控件的类型
BasedOn="{StaticResource {x:Type TextBox}}"
完整示例:
<Style x:Key="NamedStyle" TargetType="TextBox" BasedOn="{StaticResource {x:Type TextBox}}">
<Setter property="Opacity" value="0.5" />
</Style>
答案 1 :(得分:0)
@Aphelion的答案正确。我想补充一点,ResourceDictionary
事项中项目的定义顺序。
如果您覆盖滑块的默认样式,并且想要基于该样式,则必须在覆盖样式之后声明“基于”滑块。
例如,如果您这样做:
<Style x:Key="BlueSlider" TargetType="{x:Type Slider}" BasedOn="{StaticResource {x:Type Slider}}">
<Setter Property="Background" Value="Blue"/>
</Style>
<Style TargetType="{x:Type Slider}">
<Setter Property="Foreground" Value="Yellow"/>
</Style>
BlueSlider
将具有蓝色背景,并带有默认(白色)前景。
但是,如果您这样做:
<Style TargetType="{x:Type Slider}">
<Setter Property="Foreground" Value="Yellow"/>
</Style>
<Style x:Key="BlueSlider" TargetType="{x:Type Slider}" BasedOn="{StaticResource {x:Type Slider}}">
<Setter Property="Background" Value="Blue"/>
</Style>
BlueSlider
将具有蓝色背景和黄色前景。