2010-10-08 6 views
0

Je tente de modifier la couleur de surbrillance par défaut d'un élément d'onglet dans un contrôle onglet dans WPF.

Dans l'image la couleur de surbrillance est orange, je veux juste savoir s'il y a loin de la changer pour une autre couleur unie?Modifier la couleur de surbrillance par défaut de TabItem dans TabControl WPF

alt text

Voici mon XAML qui déclare TabControl et 2 TabItems

<TabControl> 
      <TabControl.Background> 
       <LinearGradientBrush EndPoint="0,1" StartPoint="0,0"> 
        <GradientStop Color="#FFCCCCD0"/> 
        <GradientStop Color="#FF526593" Offset="1"/> 
       </LinearGradientBrush> 
      </TabControl.Background> 
      <TabItem Header="test1"> 
       <TabItem.Content> 
        <StackPanel Orientation="Horizontal"> 
         <Button Content="Test" VerticalAlignment="Center" /> 
         <Button Content="Test2" /> 
        </StackPanel> 
       </TabItem.Content>    
      </TabItem> 
      <TabItem Header="Test2"> 
       <TabItem.Content> 
        <TextBox /> 
       </TabItem.Content> 
      </TabItem> 
     </TabControl> 

S'il vous plaît note également que je n'avez pas accès à un mélange d'expression, de sorte que des solutions ont besoin d'être possible dans Visual Studio 2010.

Merci.

Répondre

4

Vous devez remplacer le style du contrôle TabItem. Voici un exemple qui nécessite encore quelques ajustements. Changez juste le style que vous voulez. Le déclencheur IsSelected ajoute des modifications à TabItem lorsqu'il est sélectionné.

<Window.Resources> 
    <ResourceDictionary> 
     <Style TargetType="{x:Type TabItem}"> 
      <Setter Property="BorderThickness" 
        Value="3" /> 
      <Setter Property="BorderBrush" 
        Value="Blue" /> 
      <Setter Property="VerticalContentAlignment" 
        Value="Center" /> 
      <Setter Property="HorizontalContentAlignment" 
        Value="Center" /> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type TabItem}"> 
         <Border> 
          <Grid> 
           <Grid> 
            <Border x:Name="border" 
              CornerRadius="3,3,0,0" 
              Background="{TemplateBinding Background}" 
              BorderBrush="{TemplateBinding BorderBrush}" 
              BorderThickness="1,1,1,0" /> 
           </Grid> 
           <Border BorderThickness="{TemplateBinding BorderThickness}" 
             Padding="{TemplateBinding Padding}"> 
            <ContentPresenter ContentSource="Header" 
                 HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
                 VerticalAlignment="{TemplateBinding VerticalContentAlignment}" /> 
           </Border> 
          </Grid> 
         </Border> 
         <ControlTemplate.Triggers> 
          <Trigger Property="IsSelected" 
            Value="True"> 
           <Setter TargetName="border" 
             Property="BorderBrush" 
             Value="Red" /> 
           <Setter TargetName="border" 
             Property="BorderThickness" 
             Value="0,3,0,0" /> 
          </Trigger> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </ResourceDictionary> 
</Window.Resources> 

<Grid> 
    <TabControl> 
     <TabControl.Background> 
      <LinearGradientBrush EndPoint="0,1" 
           StartPoint="0,0"> 
       <GradientStop Color="#FFCCCCD0" /> 
       <GradientStop Color="#FF526593" 
           Offset="1" /> 
      </LinearGradientBrush> 
     </TabControl.Background> 
     <TabItem Header="test1"> 
      <TabItem.Content> 
       <StackPanel Orientation="Horizontal"> 
        <Button Content="Test" 
          VerticalAlignment="Center" /> 
        <Button Content="Test2" /> 
       </StackPanel> 
      </TabItem.Content> 
     </TabItem> 
     <TabItem Header="Test2"> 
      <TabItem.Content> 
       <TextBox /> 
      </TabItem.Content> 
     </TabItem> 
    </TabControl> 
</Grid> 
Questions connexes