如何在TabControl中更改所选选项卡的颜色

本文关键字:选项 颜色 TabControl | 更新日期: 2023-09-27 18:29:08

我正在为WPF中的对话框实现TabControl。默认情况下,选定选项卡的颜色(鼠标向下)为白色。我想将所选选项卡的颜色更改为悬停颜色(当我将鼠标悬停在选项卡上时,选项卡的颜色将更改为Office蓝色渐变,这就是我希望鼠标单击所选选项卡时的颜色)。

我该怎么做?

这段代码不起作用:

<Style x:Key="StyleTabControl" TargetType="{x:Type TabItem}">
    <Setter Property="Background" Value="#FFFDFDFD"/>
    <Style.Triggers>
        <Trigger Property="IsSelected "  Value="True">
            <Setter Property="Background" Value="SlateGray"></Setter>
        </Trigger>
    </Style.Triggers>
</Style>

注意:我还尝试了触发器属性的IsMouseCaptured事件。仍然不起作用。

如何在TabControl中更改所选选项卡的颜色

好吧。。。经过数小时的尝试,我意识到TabItem选择行为是在Template级别定义的。所以,如果我想改变背景颜色,我会这样做:

<Window.Resources>
        <Style TargetType="{x:Type TabItem}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type TabItem}">
                        <Border>
                            <Grid>
                                <Grid>
                                    <Border x:Name="border" 
                                            CornerRadius="3,3,0,0"
                                            Background="WhiteSmoke"/>
                                </Grid>
                                    <ContentPresenter ContentSource="Header"
                                                      HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                                      VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
                            </Grid>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver"
                                     Value="True">
                                <Setter TargetName="border"
                                        Property="Background"
                                        Value="LightGray" />
                            </Trigger>
                            <Trigger Property="IsSelected"
                                     Value="True">
                                <Setter TargetName="border"
                                        Property="Background"
                                        Value="LightGray" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>