WPF加速器密钥,如Visual Studio

时间:2009-03-30 12:22:50

标签: wpf hotkeys

我正在使用C#和WPF开发大量业务应用程序。我们的标准是包括所有表格上按钮的加速键(保存,取消,搜索等)。我最近注意到,当加载表单时,即使用户没有按下“Alt”键,加速键也会激活。例如,我们的搜索按钮使用“Alt-H”作为加速器,但用户只需按“H”即可启动搜索。我在按钮内容中使用标准“_”来创建加速键。

<Button Content="Searc_h"/>

是否有其他人注意到此行为,是否有人找到了需要按“Alt”键的合适解决方法?

5 个答案:

答案 0 :(得分:10)

这是Windows上加速键的标准行为,只要没有文本输入被聚焦。请不要破坏它,只需将其保留。

您可以自己查看。按Win + R打开“运行...”对话框,然后按Tab键,其中一个按钮被聚焦,然后按“B”。 “浏览”按钮将被激活。

这也是您可以使用简单的Y / N(而不是Alt + Y / Alt + N)回答这些MessageBox提示的原因。

答案 1 :(得分:3)

不要将下划线放入,然后将其添加到窗口。

  <Window.InputBindings>
    <KeyBinding Command="Help" Key="H" Modifiers="Alt"/>
  </Window.InputBindings>

答案 2 :(得分:1)

关于Sara Ford's Weblog的这篇文章讨论了这种现象。

评论者提到这是一个解决方案:

“如果你正在编写一个应用程序并且你不喜欢这种行为,请查找WM_CHANGEUISTATE,特别是UISF_HIDEFOCUS标志。”

答案 3 :(得分:1)

菜单和工具栏助记符无需在WPF中按Alt键即可工作。这是微软的标准。 请参阅此链接http://social.msdn.microsoft.com/Forums/en/wpf/thread/14f6f49f-0027-471b-b68c-e7f6ba012012

答案 4 :(得分:-1)

实际上,WPF中的命令模式允许您更精细地控制允许的键盘快捷键。它比按钮文本中的“_”更进一步。

请查看以下链接以获取更多信息:

http://www.switchonthecode.com/tutorials/wpf-tutorial-command-bindings-and-custom-commands

编辑:上一个链接已关闭 - 提供了一个新链接。

-Doug