好的。 所以我想我的应用程序在其主菜单中的“保存”,并显示“另存为...”的项目,就像Visual Studio中做; 即“保存{当前文件}”和“{保存当前的文件}为...”
我也想有正常的访问键(“S”和“A”,分别)。
我想出了两种解决方案,但也不是非常理想。
相反,只在XAML创建的主菜单,我可以在MainWindowViewModel创造这一切,所以我不得不在什么进入产生的MenuItems完全控制。 不过,我觉得,这将是MVVM的冲突(其中我试图通过非常严格的,这一次遵守),因为我必须包括每个菜单项在视图模型图标引用。 再加上它似乎有点凌乱。
我可以规定只有这两个特定的MenuItems(也许将来的),像这样的标题,但后来我最终得到一个菜单项,不仅在标头中的下划线,而且不包含访问键。
<MenuItem Header="{Binding CurrentFileName}"
HeaderStringFormat="Save {0} _As...">
我该怎么办?
下崽了它。 至少关于如何把它用XAML描述整个主菜单来完成。 刚才提出的头内容的AccessText控制,而不是一个字符串,它就像一个魅力。
<MenuItem>
<MenuItem.Style>
<Style TargetType="{x:Type MenuItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding HasSelection}" Value="false">
<Setter Property="IsEnabled" Value="false"/>
<Setter Property="Header">
<Setter.Value>
<AccessText Text="Save Selected File _As..."/>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding HasSelection}" Value="true">
<Setter Property="IsEnabled" Value="true"/>
<Setter Property="Header">
<Setter.Value>
<AccessText Text="{Binding SelectedFile.Filename, StringFormat=Save {0} _As...}"/>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</MenuItem.Style>
</MenuItem>
文章来源: Dealing with WPF Menu HeaderStringFormat and Access Keys among other things