2010-09-29 37 views
0

j'ai un TabControl qui ressemble à ceci:WPF: Réglage Premier plan d'une étiquette dans un TabItem en-tête en utilisant les styles

<TabControl> 
    <TabItem> 
    <TabItem.Header> 
     <StackPanel Orientation="Horizontal"> 
     <Canvas ... /> 
     <Label>Tab Number 1</Label> 
     </StackPanel> 
    </TabItem.Header> 
    </TabItem> 
<TabItem> 
    <TabItem.Header> 
     <StackPanel Orientation="Horizontal">  
     <Canvas ... /> 
     <Label>Tab Number 2</Label> 
     </StackPanel> 
    </TabItem.Header> 
    </TabItem> 
</TabControl> 

Ok, j'aime avoir une autre couleur de texte lorsque l'élément est sélectionné. J'ai créé un style à cette fin:

<Style TargetType="{x:Type TabItem}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type TabItem}"> 
        <Grid Height="60"> 
         <Border x:Name="Border" BorderBrush="#FFC6C7C8" 
          BorderThickness="1,0,1,0" Margin="-1,0,0,0"> 
         </Border> 
         <Border x:Name="BorderOverlay" BorderBrush="Transparent" 
          BorderThickness="1,0,1,0" Margin="-1,0,0,0"> 
          <ContentPresenter x:Name="ContentSite" 
           VerticalAlignment="Center" 
           HorizontalAlignment="Center" 
           ContentSource="Header" 
           Margin="15,6,15,6"> 
          </ContentPresenter>  
         </Border> 
        </Grid> 
        <ControlTemplate.Triggers> 
        <Trigger Property="IsSelected" Value="True"> 
         <!-- What goes here? --> 
        </Trigger> 
        <ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
</Style> 

J'ai essayé en mettant simplement Label.Foreground, mais il ne semble pas fonctionner. J'ai aussi essayé avec un TextBlock, qui n'a pas fonctionné aussi bien.

Je pense que cette question est semblable à la mienne, mais le problème n'a pas été résolu à la fin: Setting TabItem foreground color also sets the TabControl foreground color

Merci pour toute aide.

Répondre

3

Essayez d'utiliser style Déclenche au lieu de contrôle Déclencheurs modèle.

Ajouter à votre style actuel:

 <Style.Triggers> 
      <Trigger Property="IsSelected" Value="True"> 
       <Setter Property="Foreground" Value="Green" /> 
      </Trigger> 
      <Trigger Property="IsSelected" Value="False"> 
       <Setter Property="Foreground" Value="Red" /> 
      </Trigger> 
     </Style.Triggers> 

est ici un style générique pour tout le monde.

  <Style TargetType="{x:Type TabItem}"> 
       <Style.Triggers> 
        <Trigger Property="IsSelected" Value="True"> 
         <Setter Property="Foreground" Value="Green" /> 
        </Trigger> 
        <Trigger Property="IsSelected" Value="False"> 
         <Setter Property="Foreground" Value="Red" /> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
+0

Merci, cela a fonctionné! J'avais besoin de changer l'étiquette en TextBlock ... – falstaff