Я пытаюсь изменить цвет текста переднего плана текстового блока заголовка элемента вкладки WPF с помощью триггеров. Это прекрасно работает для большинства (более простых) сценариев, но не тогда, когда TextBlocks были глобально стилизованы.
Таким образом, этот простой триггер «наведением мыши» будет работать с точки зрения изменения цвета переднего плана:
<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>
Проблема в том, что, когда TextBlocks имеют глобальный стиль в App.xaml (для обеспечения согласованного вида), передний план не изменяется, но сохраняет цвет переднего плана в глобальном стиле. Вот как стилируются мои TextBlocks:
<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>
Итак, мой вопрос: не должно ли явно определенное назначение стиля (в триггере TabItem) иметь приоритет? Что еще более важно, как мне обойти это, не назначая стили всем моим текстовым блокам индивидуально, но имея текстовый блок TabItem, изменяющий цвет как ожидалось?
Большое спасибо
NT