更改 TabControl 的背景颜色

Change Backgroundcolor of TabControl

我正在使用 .NET 4.5 WPF 功能区并希望在所有情况下更改一个特定 RibbonTab 的背景颜色(无论它是否被选中、是否悬停 - 不要问为什么) .通常我会查看 Blend 中的模板代码,但尝试复制样式失败并出现错误 "could not copy template"。

到目前为止我有以下内容:

<RibbonTab.HeaderStyle>
    <Style TargetType="RibbonTabHeader" BasedOn="{StaticResource {x:Type RibbonTabHeader}}">
        <Setter Property="Background" Value="Red" />
        <Style.Triggers>
            <DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="True">
                <Setter Property="Background" Value="Yellow" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</RibbonTab.HeaderStyle>

问题是我似乎找不到如何在选择选项卡控件时更改颜色的方法。

我不能发表评论,因为我还没有足够的声望。

RibbonTabHeader 具有以下属性:

  • CheckedBackground - 获取或设置用于绘制的画笔 控件处于选中状态时的背景。
  • FocusedBackground - 获取或设置用于绘制的画笔 控件具有焦点时的背景。
  • MouseOverBackground - 获取或设置用于绘制的画笔 鼠标悬停在控件上时的背景。
  • Background - 获取或设置描述背景的画笔 一个控件。 (继承自控件。)

您是否尝试过将 MouseOverBackground 设置为 YellowCheckedBackground 为您在选择时要使用的颜色,Background 为 "not selected, not hovering" 状态。

使用 Snoop 我发现您需要为 RibbonTab 更改 CheckedBackground。原因是在模板中有一个边框,当其父级 IsSelected 更改时会触发其背景。此颜色分别绑定到 CheckedBackgroundBackground
我能够使用此代码创建一个工作示例:

<RibbonTab>
    <RibbonTab.Header>
        <RibbonTabHeader Content="TabName here"
                         CheckedBackground="Red"
                         Background="Red" />
    </RibbonTab.Header>
</RibbonTab>

选中和取消选中时它保持红色。