如何在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事件。仍然不起作用。
好吧。。。经过数小时的尝试,我意识到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>