最近のファイルビューモデルのコレクションをバインドする最近のファイルメニューアイテムを作成しました。バインド時にWPFメニュー項目のアンダースコアを使用する
<MenuItem Header="_Recent Files" ItemsSource="{Binding RecentFiles}" Command="{x:Static pm:MainWindow.RecentFileListCommand}">
<MenuItem.ItemContainerStyle>
<Style>
<Setter Property="MenuItem.Header" Value="{Binding}"/>
<Setter Property="MenuItem.Command" Value="{x:Static pm:MainWindow.RecentFileOpenCommand}"/>
<Setter Property="MenuItem.CommandParameter" Value="{Binding FilePath}"/>
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
私はリストに番号たい、と私は(正確にどのようにVisual Studioがそれをしない)数字をショートカットとして使用することにしたいです。私のビューモデルには、NumberフィールドとNameフィールドがあります。
return string.Format("_{0} {1}", Number, FilePath);
結合した場合しかし、アンダースコアは、ヘッダテキスト(ないショートカット)の一部としてリテラルと表示として見られている:私は下線を含むヘッダを返すように、toString()メソッドをオーバーライドします。私はまた、運がなければHeaderStringFormatを使ってみました:どうすれば、アンダースコアがショートカットで、リテラル文字列ではないのか分かりますか?
「この答え」(http://stackoverflow.com/a/7416523/424129)の「AccessText」コントロールを持つContentTemplateをメニューアイテムに渡すこともできます(これはボタン用ですが、MenuItemはContentTemplateプロパティも同じ祖先クラスIIRCから継承されています)。 –