WPF-styling tabitem text Vordergrund-auf-trigger wie IsEnabled, IsMouseOver, etc

Ich versuche, ändern Sie die Vordergrund-Textfarbe eines WPF-tab-item-header textblock löst. Dies funktioniert gut für die meisten (einfacheren) Szenarien aber nicht, wenn TextBlocks wurden weltweit gestylt.

Also dieses einfache "mouse-over" - trigger funktionieren würde in Bezug auf die änderung der Vordergrund-Farbe:

<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 Global gestylt in App.xaml (für die Aufrechterhaltung einer konsistenten look), der Vordergrund ändert sich nicht, sondern behält die Global gestylt Vordergrundfarbe. Dies ist, wie mein TextBlocks Stil:

    <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, sollte nicht auf die explizit definierten Stil-Zuordnung (in TabItem-trigger) Vorrang haben? Noch wichtiger ist, wie kann ich dies umgehen ohne zuweisen von Stilen, um alle meine Textblöcke individuell, aber die TabItem-textblock ändern, Farbe wie erwartet?

Vielen Dank

NT

InformationsquelleAutor | 2009-07-15
Schreibe einen Kommentar