修改WPF RibbonQuickAccessToolBar渐变背景及RibbonTab样式问题
WPF 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可看到本地样式和主题样式中的颜色设置,但界面无变化:

内容的提问来源于stack exchange,提问作者CiucaS
相关产品推荐
相关产品推荐

