Style.BasedOn 属性

定义

获取或设置一个作为当前样式的基准的已定义样式。

public:
 property System::Windows::Style ^ BasedOn { System::Windows::Style ^ get(); void set(System::Windows::Style ^ value); };
public System.Windows.Style BasedOn { get; set; }
[System.Windows.Markup.Ambient]
public System.Windows.Style BasedOn { get; set; }
member this.BasedOn : System.Windows.Style with get, set
[<System.Windows.Markup.Ambient>]
member this.BasedOn : System.Windows.Style with get, set
Public Property BasedOn As Style

属性值

一个作为当前样式的基准的已定义样式。 默认值是 null

属性

示例

可通过多种方式扩展或继承 WPF 中的样式。 样式可以通过此属性基于其他样式。 使用此属性时,新样式将继承未在新样式中显式重新定义的原始样式的值。 在下面的示例中, Style2 继承 Control.Background 的值 Yellow,并添加 Control.ForegroundBlue


<Style x:Key="Style1">
  <Setter Property="Control.Background" Value="Yellow"/>
</Style>

<Style x:Key="Style2" BasedOn="{StaticResource Style1}">
  <Setter Property="Control.Foreground" Value="Blue"/>
</Style>

同样,样式可以基于现有 WPF 元素的样式,如以下示例中所示,其中新样式基于元素的 TextBlock 样式。

  <Style
x:Key="TitleText"
BasedOn="{StaticResource {x:Type TextBlock}}"
TargetType="{x:Type TextBlock}">
    <Setter Property="FontSize" Value="32pt" />
    <Setter Property="Foreground">
      <Setter.Value>
        <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
          <LinearGradientBrush.GradientStops>
            <GradientStop Offset="0.0" Color="#90C117" />
            <GradientStop Offset="1.0" Color="#5C9417" />
          </LinearGradientBrush.GradientStops>
        </LinearGradientBrush>
      </Setter.Value>
    </Setter>
    <Setter Property="RenderTransform">
      <Setter.Value>
        <TranslateTransform X="0" Y="10"/>
      </Setter.Value>
    </Setter>
  </Style>

注意

如果使用 属性创建样式 TargetType ,并将其基于另一个同时定义 TargetType 属性的样式,则派生样式的目标类型必须与基本样式的类型相同或派生自该样式的类型。

为特定类型定义的样式也可以基于其他样式,如以下示例所示。

<Style TargetType="{x:Type Button}" BasedOn="{StaticResource Style1}">
  <Setter Property="Foreground" Value="Green"/>
</Style>

注解

每个样式仅支持一个 BasedOn 值。

XAML 属性用法

<object BasedOn="myStyle" .../>

XAML 值

myStyle 现有样式。 通常,使用 标记扩展和 WPF XAML 来引用现有样式。

适用于