所选 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 属性来自定义功能区和功能区选项卡背景。这将反过来调整所有状态所有标签的背景颜色。这些背景使用渐变并在各自的控制模板中定义。再一次,即使是获得这些控件模板也不容易,请参阅:

How to customize the WPF Ribbon 4.5 (styles, templates, etc.)

如果您仍然想尝试,这里有一个相关的帖子,它链接了一个 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 的不同背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

Angular Kendo Grid:所选行的背景颜色

更改所选单元格的背景颜色?

如何读取表格视图中所选行的背景颜色?

如何更改所选 react-bootstrap ToggleButton 的背景颜色?

颤动如何从 ListTile 更改所选图块的背景颜色

如何更改所选 SlidingMenu 行的背景颜色并保持不变,直到选择其他行?