首先想到,您会认为 Icon 属性只能包含图像。但它实际上可以包含任何东西!当我以编程方式尝试将 Image 属性直接设置为带有图像路径的字符串时,我偶然发现了这一点。结果是它没有显示图像,而是路径的实际文本!然后我发现我必须先创建一个 Image 元素并将其设置为 Icon 属性。这使我认为 Image 属性只是位于菜单左侧图标区域中的任何内容容器,我是对的。我试着在那里放一个按钮,它起作用了!
这在菜单项的图标区域中显示了一个带有文本“i”的按钮。单击按钮时,会触发 Button_Click 事件(单击按钮时不会触发 LanguageMenu_Click)。
<MenuItem Name="LanguageMenu" Header="_Language" Click="LanguageMenu_Click">
<MenuItem.Icon>
<Button Click="Button_Click">i</Button>
</MenuItem.Icon>
</MenuItem>
这导致了一种替代方法,不必为图标制作图像,而是使用带有符号字体的文本来显示简单的“图标”。以下示例使用包含软盘符号的 Wingdings 字体。字体中的这个符号映射到 charachter <
,它在 XAML 中具有特殊含义,因此我们必须使用编码版本<
来代替。这就像做梦一样!下面将软盘符号显示为菜单项上的图标:
<MenuItem Name="mnuFileSave" Header="Save" Command="ApplicationCommands.Save">
<MenuItem.Icon>
<Label VerticalAlignment="Center" HorizontalAlignment="Center"
FontFamily="Wingdings"><</Label>
</MenuItem.Icon>
</MenuItem>