更改选项卡控件的背景颜色

时间:2015-03-02 17:21:46

标签: c# wpf .net-4.5 ribbon

我使用的是.NET 4.5 WPF功能区,想要在所有情况下更改一个特定RibbonTab的背景颜色(无论是选择,是否悬停,都不要 - 不要问为什么)。通常我会在Blend中查看模板的代码,但尝试复制样式会失败并显示错误"无法复制模板"。

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

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

问题是,当选择标签控件时,我似乎找不到如何更改颜色的方法。

2 个答案:

答案 0 :(得分:3)

我无法评论,因为我还没有足够的声誉。

RibbonTabHeader具有以下属性:

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

您是否尝试过将MouseOverBackground设为YellowCheckedBackground为您选择时要使用的颜色,Background为“未选中,不悬停”状态。

答案 1 :(得分:1)

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

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

选择和取消选择时,它会保持红色。