【发布时间】:2016-07-01 04:08:29
【问题描述】:
我创建了一个最近的文件菜单项,我将一组最近的文件视图模型绑定到该菜单项。
<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 正是这样做的)。我的视图模型有一个数字字段和名称字段。我重写了 ToString() 方法以返回包含下划线的标题:
return string.Format("_{0} {1}", Number, FilePath);
但是,当绑定时,下划线被视为文字并显示为标题文本的一部分(而不是快捷方式)。我也尝试使用 HeaderStringFormat 没有运气:如何让 WPF 将下划线视为快捷方式而不是文字字符串?
【问题讨论】:
-
您可以尝试为 menuitem 提供一个带有
AccessText控件的 ContentTemplate,as in this answer(这是一个按钮,但 MenuItem 也是一个 ContentTemplate 属性——继承自同一个祖先类 IIRC )。