2010-10-08 75 views
0

我试图更改WPF中选项卡控件中选项卡项目的默认高亮颜色。

在图像中,突出显示的颜色是橙色,我只想知道是否有改变它为另一种纯色?在TabControl中更改TabItem的默认高亮颜色WPF

alt text

这里是我的XAML该声明的TabControl和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> 

请注意,以及我没有获得Expression Blend的,因此任何解决方案需要在Visual Studio 2010是可能的。

谢谢。

回答

4

您需要重写TabItem控件的样式。 下面是一个仍然需要调整的例子。只需将其改为您想要的风格即可。 IsSelected触发器在选择TabItem时会将更改添加到TabItem。

<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>