Style::BasedOn Property

Gets or sets a defined style that is the basis of the current style.

Namespace:  System.Windows
Assembly:  PresentationFramework (in PresentationFramework.dll)
XMLNS for XAML: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation

[AmbientAttribute]
public:
property Style^ BasedOn {
	Style^ get ();
	void set (Style^ value);
}
<object>
  <object.BasedOn>
    <Style .../>
  </object.BasedOn>
</object>
<object BasedOn="myStyle" .../>

XAML Values

myStyle

An existing style. Typically, you use the Markup Extensions and WPF XAML to refer to an existing style.

Property Value

Type: System.Windows::Style
A defined style that is the basis of the current style. The default value is nullptr.

Each style only supports one BasedOn value.

There are several ways that styles in WPF can be extended or inherited. Styles can be based on other styles through this property. When you use this property, the new style will inherit the values of the original style that are not explicitly redefined in the new style. In the following example, Style2 inherits the Control::Background value of Yellow, and adds a Control::Foreground value of Blue.



<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>


Similarly, styles can be based on the style of an existing WPF element, as in the following example where the new style is based on the style of a TextBlock element.


  <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>


NoteNote

If you create a style with a TargetType property and base it on another style that also defines a TargetType property, the target type of the derived style must be the same as or be derived from the type of the base style.

Styles defined for specific types can also be based on other styles, as in the following example.


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


.NET Framework

Supported in: 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

ADD
Show:
© 2014 Microsoft