【问题标题】:WPF Accelerator Keys like Visual StudioWPF 加速键,如 Visual Studio
【发布时间】:2010-10-16 08:49:30
【问题描述】:

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

<Button Content="Searc_h"/>

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

【问题讨论】:

    标签: wpf hotkeys


    【解决方案1】:

    这是 Windows 上没有文本输入时加速键的标准行为。请不要破坏它,把它留在里面。

    您可以自己检查。按 Win+R 调出“运行...”对话框,然后按 Tab 使其中一个按钮成为焦点,然后按“B”。 “浏览”按钮将被激活。

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

    【讨论】:

    • 当然。确实。完全。对我来说最令人沮丧的事情(当我是用户时)是当每个程序中工作的标准功能突然随机失败程序只是因为程序员试图做一些聪明的事情,或者更糟糕的是,故意破坏它...
    • +1;永远不要制作违背操作系统默认行为的应用程序。
    【解决方案2】:

    根本不要输入下划线,然后将其添加到窗口中。

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

    【讨论】:

    • 虽然这实现了 OP 的要求,但看在上帝的份上,不要这样做。休息。标准。功能性。在。目的。所有加速键一直都是这样工作的。
    • +1 因为他是唯一回答 OP 问题的人。也许OP在这方面没有选择?有时你必须做你不想做的事情,因为你的管理层需要它,如果你不这样做,它就是你的工作。
    【解决方案3】:

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

    一位评论者将此作为解决方案:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        查看以下链接了解更多信息:

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

        编辑:上一个链接已失效 - 提供了一个新链接。

        -道格

        【讨论】:

        • 大声笑,今天早上它对我有用。我想知道他们的网站是否存在稳定性问题...
        • 这就是为什么你不应该发布依赖链接的答案。只需在您的帖子中重申实际答案即可。
        猜你喜欢
        • 1970-01-01
        • 2018-08-29
        • 1970-01-01
        • 2011-05-27
        • 2010-12-16
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多