C# 更改TabControl WPF中TabItem的默认高亮显示颜色

C# 更改TabControl WPF中TabItem的默认高亮显示颜色,c#,.net,wpf,xaml,tabcontrol,C#,.net,Wpf,Xaml,Tabcontrol,我正在尝试更改WPF中选项卡控件中选项卡项的默认突出显示颜色。 在图像中,突出显示的颜色是橙色,我只是想知道是否有办法将其更改为另一种纯色 这是我的XAML,它声明了TabControl和2个TabItems <TabControl> <TabControl.Background> <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">

我正在尝试更改WPF中选项卡控件中选项卡项的默认突出显示颜色。

在图像中,突出显示的颜色是橙色,我只是想知道是否有办法将其更改为另一种纯色

这是我的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中实现


谢谢。

您需要覆盖TabItem控件的样式。 下面是一个仍然需要调整的示例。只要把它改成你想要的样式。 IsSelected触发器在选中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>

您需要覆盖TabItem控件的样式。 下面是一个仍然需要调整的示例。只要把它改成你想要的样式。 IsSelected触发器在选中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>