最初に考えたのは、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 フォントを使用しています。<
フォント内のこの記号は、XAML で特別な意味を持つcharachter にマップされるため、<
代わりにエンコードされたバージョンを使用する必要があります。これは夢のように機能します!以下は、フロッピーディスクのシンボルをメニュー項目のアイコンとして示しています。
<MenuItem Name="mnuFileSave" Header="Save" Command="ApplicationCommands.Save">
<MenuItem.Icon>
<Label VerticalAlignment="Center" HorizontalAlignment="Center"
FontFamily="Wingdings"><</Label>
</MenuItem.Icon>
</MenuItem>