Ich versuche, die Vordergrundtextfarbe eines Header-Textblock WPF Registerkarte Element mithilfe von Triggern zu ändern. Dies funktioniert für die meisten (einfacheren) Szenarien, aber nicht, wenn TextBlocks global formatiert wurden.WPF Formatierung Tabitem Text Vordergrund bei Trigger wie IsEnabled, IsMouseOver, etc
Also das einfache „Maus über“ Trigger in Bezug auf die Änderung der Vordergrundfarbe arbeiten würde:
<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>
Das Problem ist, dass, wenn Textblocks werden global in App.xaml (zur Aufrechterhaltung eines einheitlichen Look) Stil, Der Vordergrund ändert sich nicht, behält jedoch die global formatierte Vordergrundfarbe bei. Dies ist, wie meine Textblocks gestylt werden:
<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>
Also meine Frage ist nicht die explizit definierte Stil Zuordnung (in TabItem den Trigger) Vorrang hat? Noch wichtiger, wie kann ich das umgehen, ohne allen meinen Textblöcken Stile einzeln zuzuweisen, aber wenn der TabItem-Textblock die Farbe wie erwartet ändert?
Vielen Dank
NT