所选 RibbonTab 的不同背景颜色
Posted
技术标签:
【中文标题】所选 RibbonTab 的不同背景颜色【英文标题】:Different background color for selected RibbonTab 【发布时间】:2021-06-22 00:17:35 【问题描述】:我有一个 WPF 窗口,其 Ribbon
带有深色背景颜色 (SolidColorBrush
)
我已将选项卡的字体颜色设置为白色,但这在所选选项卡中不可读。所以我想在选定的选项卡中使用黑色背景(或者黑色字体颜色也可以)。 我的 app.xaml 包含用于设置样式的代码:
<Application.Resources>
<ResourceDictionary>
<Style x:Key="SelectedRibbonTab" TargetType="RibbonTab">
<Setter Property="Background" Value="Black"></Setter>
</Style>
<Style TargetType="RibbonTab">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="HeaderStyle" Value="DynamicResource SelectedRibbonTab"></Setter>
</Trigger>
</Style.Triggers>
</Style>
<Style TargetType="RibbonTabHeader">
<Setter Property="Foreground" Value="White"></Setter>
</Style>
</ResourceDictionary>
</Application.Resources>
这显然不起作用,有什么解决方案可以解决这个问题吗?
【问题讨论】:
【参考方案1】:您可以使用单一样式来更改标题文本颜色 (Foreground
),使用 IsRibbonTabSelected
。
<Style TargetType="RibbonTabHeader">
<Setter Property="Foreground" Value="White"/>
<Style.Triggers>
<Trigger Property="IsRibbonTabSelected" Value="True">
<Setter Property="Foreground" Value="Black"/>
</Trigger>
</Style.Triggers>
</Style>
不建议更改功能区选项卡的背景,因为这不是那么简单。可以通过设置Background
本身的Background
属性来自定义功能区和功能区选项卡背景。这将反过来调整所有状态中所有标签的背景颜色。这些背景使用渐变并在各自的控制模板中定义。再一次,即使是获得这些控件模板也不容易,请参阅:
如果您仍然想尝试,这里有一个相关的帖子,它链接了一个 MSDN 论坛答案,该答案提供了一种可能的样式和可以适应的控制模板。不过,我建议简单地使用上面的样式。
Changing Windows.Ribbon background color Placing a Background to a Tab on a Ribbon Control另一种方法是使用 Fluent.Ribbon,它为自定义提供了更多支持。
Fluent.Ribbon GitHub Fluent.Ribbon NuGet package Fluent.Ribbon Docs on Creating Custom Themes【讨论】:
以上是关于所选 RibbonTab 的不同背景颜色的主要内容,如果未能解决你的问题,请参考以下文章