如何获取WPF Ribbon ApplicationMenu自带的写字板样式默认菜单图标
解决方案
- 移除自定义图标属性:你现有代码中为
RibbonApplicationMenu手动指定了SmallImageSource属性,直接删除该属性即可,WPF Ribbon控件会默认加载你要的写字板同款系统默认菜单图标,无需额外引入外部资源。修改后的XAML代码示例如下:
<Window x:Class="Teletext_Editor.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:ribbon="clr-namespace:System.Windows.Controls.Ribbon;assembly=System.Windows.Controls.Ribbon" xmlns:local="clr-namespace:Teletext_Editor" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> <Grid> <DockPanel> <ribbon:Ribbon DockPanel.Dock="Top"> <Ribbon.ApplicationMenu> <RibbonApplicationMenu> <RibbonApplicationMenuItem Name="Item1" Header="Pomoc"/> </RibbonApplicationMenu> </Ribbon.ApplicationMenu> </ribbon:Ribbon> </DockPanel> </Grid> </Window>
- 显式引用内置图标资源:如果需要主动指定图标路径,可直接调用WPF Ribbon程序集内置的图标资源,资源路径如下:
pack://application:,,,/System.Windows.Controls.Ribbon;component/Ribbon/Images/ApplicationMenu.png
你可以把该路径直接赋值给SmallImageSource属性,效果和默认加载完全一致。 - 导出图标到本地:如果需要单独保存该图标文件,可使用如下C#代码导出:
var uri = new Uri("pack://application:,,,/System.Windows.Controls.Ribbon;component/Ribbon/Images/ApplicationMenu.png"); var bitmap = new BitmapImage(uri); using (var fileStream = new FileStream("ApplicationMenuIcon.png", FileMode.Create)) { PngBitmapEncoder encoder = new PngBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(bitmap)); encoder.Save(fileStream); }
你之前在写字板exe资源中无法找到该图标,是因为写字板调用的是系统公共Ribbon框架的内置资源,没有将图标打包在自身程序文件内。
内容的提问来源于stack exchange,提问作者LaCalienta
相关产品推荐
相关产品推荐

