J'essaie de changer la couleur du texte de premier plan d'un bloc de texte d'en-tête d'un élément de l'onglet WPF en utilisant des déclencheurs. Cela fonctionne bien pour la plupart des scénarios (plus simples), mais pas lorsque les TextBlocks ont été globalement stylisés.WPF style tabitem texte de premier plan sur le déclencheur tels que IsEnabled, IsMouseOver, etc
donc cette « souris sur » simple déclencheur pourrait fonctionner en termes de changement de la couleur de premier plan:
<Style x:Key="testTabItemStyle1" TargetType="{x:Type TabItem}">
<Setter Property="Foreground" Value="Black"/>
<Setter Property="Background" Value="White"/>
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Grid SnapsToDevicePixels="true">
<Border x:Name="Bd" Background="White" BorderBrush="Gray" BorderThickness="1,1,1,0">
<ContentPresenter HorizontalAlignment="{Binding Path=HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" x:Name="Content" VerticalAlignment="{Binding Path=VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" ContentSource="Header"/>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Background" TargetName="Bd" Value="Black"/>
<Setter Property="Foreground" Value="False"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Le problème est que lorsque TextBlocks sont globalement décorées dans App.xaml (pour maintenir un aspect cohérent), le premier plan ne change pas, mais conserve la couleur de premier plan de style global. Voici comment mes TextBlocks sont stylés:
<Style TargetType="{x:Type TextBlock}">
<Setter Property="FontFamily" Value="Arial"/>
<Setter Property="Foreground" Value="Brown"/>
<Setter Property="Margin" Value="4,0,4,0"/>
<Setter Property="TextTrimming" Value="CharacterEllipsis"/>
<Setter Property="TextWrapping" Value="NoWrap"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
Ma question est donc ne devrait pas l'attribution de style explicitement défini (dans le déclenchement de TabItem) ont priorité? Plus important encore, comment est-ce que je travaille autour de ceci sans assigner des styles à tous mes blocs de texte individuellement mais avoir le bloc de texte de TabItem change la couleur comme prévu?
Un grand merci
NT