Say, I have a default style for a TextBox 'TextBoxStyleBase'.
I then define a DataGrid style which has an own TextBox style BasedOn that Base-style, defining another Border Color.
In some place inside a DataGrid I want to define another TextBox style but inherit from the one defined in DataGrid style.
Is there a way to make a style inherit from the style that is currently defined for a specific control in the current 'context'?
EDIT:
To make it more clear, here's what I have:
<!-- explicit style for all TextBoxes -->
<Style TargetType="{x:Type TextBox}" x:Key="TextStyle">
<Setter Property="FontSize" Value="16"/>
</Style>
<!-- implicit style for all TextBoxes -->
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource TextStyle}"/>
<!-- DataGrid style changing inner TextBox style -->
<Style TargetType="{x:Type DataGrid}">
<Style.Resources>
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource TextStyle}">
<Setter Property="FontSize" Value="20"/>
</Style>
<!-- since TextBox has defined implicit style this would be equivalent to -->
<!--<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
<Setter Property="FontSize" Value="20"/>
</Style>-->
</Style.Resources>
</Style>
<Control>
<DataGrid>
<Row>
<TextBox/> <!-- should show as defined in DataGrid style -->
</Row>
<Row>
<Row.Resources>
<Style TargetType="{x:Type TextBox}" BasedOn=" ??? ">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="FontWeight" Value="Bold"/>
</Trigger>
</Style.Triggers>
</Style>
</Row.Resources>
<TextBox/> <!-- should show with additional trigger -->
</Row>
</DataGrid>
</Control>
What to put in BasedOn = '???' so that the text shows up in FontSize 20 but Bold if hovered.
You cannot add two
Styleswith the same key inside the sameResourceDictionary. So if you already have defined an implicitStylewithout anx:Keyin aResourceDictionaryfor a specific type, you cannot add another one to the sameResourceDictionary.Otherwise you should be able to base a
Styleon the default style that is in scope like this: