使用ApplicationCommands类时,我可以免费获得很多东西。文字,快捷方式和本地化。然而,似乎(或者我还没有找到)指定由_符号指定的字符的方法(例如E_xit)。有没有办法为
指定该字符ApplicationCommands.New ?
或者是使用
的唯一解决方案CustomRountedUICommand
我可以简单地为name属性指定_New吗?
编辑:
在此澄清我的xaml文件的提取:
<MenuItem Name="NewProject" Command="{Binding MenuNewProject}" />
MenuNewProject是一个添加了InputGesture的ApplicationCommand.New。但是如何在不设置菜单标题的情况下添加下划线(已经通过命令绑定完成)?
EDIT2:
正如已经指出的那样,这显然是一个菜单问题。现在的问题是:在文本中是否有替代指定加速键的?我在MenuItem类中找不到任何内容。
最终解决方案:
使用:
AccessKeyManager.Register('N',MenuItem)
但松散显示带下划线的N或设置
MenuItem.Header ='_New'
手动并松散本地化。不幸的是,解析ApplicationCommands.New.Name总是返回英文名称。 ContentPresenter类可能有一个解决方案,但这对我的小项目来说有点过分了。
答案 0 :(得分:1)
在标题文字中使用下划线_
创建热键或使用输入绑定创建快捷方式(from this answer):
<Window.CommandBindings>
<CommandBinding Command="New" Executed="CommandBinding_Executed" />
</Window.CommandBindings>
<Window.InputBindings>
<KeyBinding Key="N" Modifiers="Control" Command="New"/>
</Window.InputBindings>
答案 1 :(得分:1)
RoutedUICommand
没有指定加速键或快捷键,因为它们可能放在多个位置,可能使用不同的参数(使它们实际上是不同的命令)。因此,应用加速器的责任在承载命令的Menu
上。你需要自己分配这些。
<MenuItem Header="_New"
Command="ApplicationCommands.New" />
使用InputBinding
in the XAML or in Code Behind指定的快捷键。
<Window.InputBindings>
<KeyBinding Key="N"
Modifiers="Control"
Command="ApplicationCommands.New" />
</Window.InputBindings>
快捷键应自动显示在菜单中。