You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改WPF RibbonQuickAccessToolBar渐变背景及RibbonTab样式问题

WPF Ribbon组件黑白主题样式调整问题

我正在为应用打造黑白主题,但Ribbon组件的样式调整十分棘手。现有Ribbon效果如下:
当前Ribbon效果

现有Ribbon代码实现

<Ribbon x:Name="AppRibbon"
               DockPanel.Dock="Top"
               BorderThickness="1"
               Grid.Row="0"
               MaxHeight="138"
               SelectedIndex="0">
           <Ribbon.QuickAccessToolBar>
               <RibbonQuickAccessToolBar Padding="10" Margin="2" Background="Red" Foreground="Aquamarine" OverridesDefaultStyle="True" Style="{DynamicResource CustomQuickAccessStyle}">
               <RibbonButton x:Name="QuickAccessFileOpenButton"
                             SmallImageSource="{svgc:SvgImage Source='pack://application:,,,/Resources/ApplicationToolbar/file_open.svg'}">
                   <RibbonButton.ToolTip>
                       <uc:CustomTemplateTooltip Placement="Bottom"
                                                 Header="{x:Static p:Resources.Quick_Access_File_Open_Tooltip_Header}"
                                                 Body="{x:Static p:Resources.Quick_Access_File_Open_Tooltip_Body}"
                                                 Template="{StaticResource CustomToolTipTemplate}" />
                   </RibbonButton.ToolTip>
               </RibbonButton>
               <RibbonToggleButton x:Name="AutoOpenLastFileButton"
                                   SmallImageSource="{svgc:SvgImage Source='pack://application:,,,/Resources/HomeTab/File/auto_open_file.svg'}">
                   <RibbonToggleButton.ToolTip>
                       <uc:CustomTemplateTooltip Placement="Bottom"
                                                 Header="{x:Static p:Resources.Quick_Access_File_Auto_Open_Tooltip_Header}"
                                                 Body="{x:Static p:Resources.Quick_Access_File_Auto_Open_Tooltip_Body}"
                                                 Template="{StaticResource CustomToolTipTemplate}" />
                   </RibbonToggleButton.ToolTip>
               </RibbonToggleButton>
               <RibbonButton x:Name="QuickAccessPublishButton"
                             SmallImageSource="{svgc:SvgImage Source='pack://application:,,,/Resources/ApplicationToolbar/publish_to_png.svg'}">
                   <RibbonButton.ToolTip>
                       <uc:CustomTemplateTooltip Placement="Bottom"
                                                 Header="{x:Static p:Resources.Tooltip_Export_Export_Png_Button_Header}"
                                                 Body="{x:Static p:Resources.Tooltip_Export_Export_Png_Button_Body}"
                                                 Template="{StaticResource CustomToolTipTemplate}" />
                   </RibbonButton.ToolTip>
               </RibbonButton>
               <RibbonButton x:Name="QuickAccessDeleteFileButton"
                             Label="{x:Static p:Resources.Ribbon_File_Delete}"
                             SmallImageSource="{svgc:SvgImage Source='pack://application:,,,/Resources/QuickAccessToolbar/file_delete.svg'}">
                   <RibbonButton.ToolTip>
                       <uc:CustomTemplateTooltip Placement="Bottom"
                                                 Header="{x:Static p:Resources.Tooltip_Home_Delete_Image_Header}"
                                                 Body="{x:Static p:Resources.Tooltip_Home_Delete_Image_Body}"
                                                 Template="{StaticResource CustomToolTipTemplate}" />
                   </RibbonButton.ToolTip>
               </RibbonButton>
               <RibbonButton x:Name="QuickAccessRenameFileButton"
                             Label="{x:Static p:Resources.Ribbon_File_Rename}"
                             SmallImageSource="{svgc:SvgImage Source='pack://application:,,,/Resources/QuickAccessToolbar/file_rename.svg'}">
                   <RibbonButton.ToolTip>
                       <uc:CustomTemplateTooltip Placement="Bottom"
                                                 Header="{x:Static p:Resources.Tooltip_Home_Rename_Image_Header}"
                                                 Body="{x:Static p:Resources.Tooltip_Home_Rename_Image_Body}"
                                                 Template="{StaticResource CustomToolTipTemplate}" />
                   </RibbonButton.ToolTip>
               </RibbonButton>
               <RibbonButton x:Name="QuickAccessFileProperitiesButton"
                             Label="{x:Static p:Resources.Ribbon_File_Properties}"
                             SmallImageSource="{svgc:SvgImage Source='pack://application:,,,/Resources/HomeTab/File/file_properties.svg'}">
                   <RibbonButton.ToolTip>
                       <uc:CustomTemplateTooltip Placement="Bottom"
                                                 Header="{x:Static p:Resources.Tooltip_Home_Image_Properties_Header}"
                                                 Body="{x:Static p:Resources.Tooltip_Home_Image_Properties_Body}"
                                                 Template="{StaticResource CustomToolTipTemplate}" />
                   </RibbonButton.ToolTip>
                   </RibbonButton>
               </RibbonQuickAccessToolBar>
           </Ribbon.QuickAccessToolBar>    
</Ribbon>   

遇到的问题及尝试的解决方案

1. QuickAccessToolBar样式无法修改

我尝试将QuickAccessToolBar的渐变背景改为纯色:

  • 直接在控件上设置Background="Red"、Foreground="Aquamarine",界面无任何变化,样式仍继承自Ribbon本身;
  • 尝试自定义Style,代码如下,但依旧无效:
<Style  x:Key="CustomQuickAccessStyle" TargetType="{x:Type RibbonQuickAccessToolBar}">
        <Setter Property="OverridesDefaultStyle"
                Value="True" />
        <Setter Property="Background"
                Value="Red" />
        <Setter Property="BorderBrush"
                Value="Blue" />
        <Setter Property="Foreground"
                Value="DarkGreen" />
        <Setter Property="FocusVisualStyle"
                Value="{StaticResource FocusVisual}" />
    </Style>

2. RibbonTab选中状态样式无法修改

RibbonTab选中状态背景为白色,我想改为偏灰色,但设置RibbonTabHeader的Style也无效,代码如下:

<Style TargetType="{x:Type RibbonTabHeader}">
        <Setter Property="Foreground"
                Value="Red" />
        <Style.Triggers>
            <Trigger Property="IsRibbonTabSelected"
                     Value="True">
                <Setter Property="Foreground"
                        Value="Green" />
            </Trigger>
        </Style.Triggers>
    </Style>

补充说明

通过Live Property Explorer可看到本地样式和主题样式中的颜色设置,但界面无变化:
Live Property Explorer截图1
Live Property Explorer截图2

内容的提问来源于stack exchange,提问作者CiucaS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 10:28:08