Say, ich habe einen Standard-Stil für eine TextBox
'TextBoxStyleBase'. Ich definiere dann einen DataGrid
Stil, der einen eigenen TextBox
Stil BasedOn hat, der eine andere Border Color definiert.WPF Style BasedOn Eltern Stil im aktuellen Kontext
An einer Stelle in einem DataGrid
möchte ich einen anderen TextBox
Stil definieren, aber erben von dem in DataGrid
definierten Stil.
Gibt es eine Möglichkeit, einen Stil von dem Stil zu übernehmen, der aktuell für ein bestimmtes Steuerelement im aktuellen Kontext definiert ist?
EDIT:
Um es klar, hier ist was ich habe:
<!-- 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>
Was in BasedOn = setzen '???' so dass der Text in FontSize 20 erscheint, aber fett, wenn er schwebt.
<Style TargetType="TextBox" BasedOn="{StaticResource <your style name>}">
PS:
Ich nehme an, Sie verstehen meine Frage falsch, finden Sie in meinem clearification – redstripes
Warum gehst du nicht geben ein Schlüssel dazu und verwenden Sie es wo immer Sie es brauchen? –