我使用的是.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>
问题是,当选择标签控件时,我似乎找不到如何更改颜色的方法。
答案 0 :(得分:3)
我无法评论,因为我还没有足够的声誉。
RibbonTabHeader
具有以下属性:
CheckedBackground
- 获取或设置用于绘制的画笔
控件处于Checked状态时的背景。FocusedBackground
- 获取或设置用于绘制的画笔
控件焦点时的背景。MouseOverBackground
- 获取或设置用于绘制的画笔
当鼠标悬停在控件上时,控件的背景。Background
- 获取或设置描述背景的画笔
一个控件。 (继承自Control。)您是否尝试过将MouseOverBackground
设为Yellow
,
CheckedBackground
为您选择时要使用的颜色,Background
为“未选中,不悬停”状态。
答案 1 :(得分:1)
使用Snoop我发现您需要为CheckedBackground
更改RibbonTab
。原因是在模板中有一个边框,当其父IsSelected改变时触发其背景。此颜色分别与CheckedBackground
和Background
绑定
我能用这段代码创建一个工作示例:
<RibbonTab>
<RibbonTab.Header>
<RibbonTabHeader Content="TabName here"
CheckedBackground="Red"
Background="Red" />
</RibbonTab.Header>
</RibbonTab>
选择和取消选择时,它会保持红色。