Я пытаюсь изменить цвет текста переднего плана текстового блока заголовка элемента WPF с помощью триггеров. Это отлично подходит для большинства (более простых) сценариев, но не тогда, когда TextBlocks были в глобальном стиле.WPF stiting tabitem text foreground после запуска, например IsEnabled, IsMouseOver и т. Д.
Так что это просто «мыши над» триггером будут работать с точкой зрения изменения цвета переднего плана:
<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