3

使用 ApplicationCommands 类时,我可以免费获得很多东西。文本、快捷方式和本地化。然而,似乎有(或者我还没有找到)一种方法来指定您将通过 _ 表示法指定的字符(例如 E_xit)。有没有办法指定该字符,例如

ApplicationCommands.New ? 

或者是使用

CustomRountedUICommand 

我可以在哪里简单地为 name 属性指定 _New?

编辑:

在这里澄清我的 xaml 文件的提取:

<MenuItem Name="NewProject" Command="{Binding MenuNewProject}" />

MenuNewProject 是添加了 InputGesture 的 ApplicationCommand.New。但是如何在不设置菜单标题的情况下添加下划线(这已经通过命令绑定完成)?

编辑2:

正如已经指出的那样,这显然是一个菜单问题。现在的问题是:是否有替代文本中的_来指定加速键?我在 MenuItem 类中没有找到任何东西。

最终解决方案:

要么使用:

AccessKeyManager.Register('N',MenuItem)

但松开显示的下划线 N 或设置

MenuItem.Header ='_New'

手动并松动本地化。不幸的是,解析 ApplicationCommands.New.Name 总是返回英文名称。ContentPresenter 类可能有一个解决方案,但这对于我的小项目来说有点过头了。

4

2 回答 2

1

_标题文本中使用下划线创建热键或使用 InputBinding 创建快捷方式(来自此答案):

<Window.CommandBindings>
        <CommandBinding Command="New" Executed="CommandBinding_Executed" />
</Window.CommandBindings>
<Window.InputBindings>
        <KeyBinding Key="N" Modifiers="Control" Command="New"/>
</Window.InputBindings>
于 2013-05-10T12:28:13.180 回答
1

RoutedUICommand' 不指定加速键或快捷键,因为它们可能被放置在多个位置,可能具有不同的参数(使它们生效不同的命令)。因此,应用加速器的责任Menu在于托管命令。您需要自己分配这些。

<MenuItem Header="_New"
          Command="ApplicationCommands.New" />

InputBinding您在 XAML 或 Code Behind 中使用 指定的快捷键。

<Window.InputBindings>
  <KeyBinding Key="N"
              Modifiers="Control" 
              Command="ApplicationCommands.New" />
</Window.InputBindings>

快捷键应自动显示在您的菜单中。

于 2013-05-10T12:28:14.530 回答