如何制作“全局”wpf 应用程序热键

Posted

技术标签:

【中文标题】如何制作“全局”wpf 应用程序热键【英文标题】:How can I make "global" wpf application hotkeys 【发布时间】:2019-11-22 02:51:41 【问题描述】:

我正在开发一个 WPF 应用程序,其中有许多窗口。像往常一样,主窗口允许打开其他窗口。我想创建应用程序级别的热键(快捷方式),它可以打开特定的窗口,并且可以在我的应用程序的每个窗口中使用。

我曾尝试在我的 MainWindow 类中使用 CommandBinding,请参见下面的示例,但如果主窗口只有焦点(实际上应该如此),它就可以工作。 我还尝试了这个问题Application Level shortcut keys in WPF 的第二种方法,并创建了与键“P”的绑定,但是每当我按 P 时,即使它是 TextBox 输入文本或类似的东西,窗口也会打开。

我希望热键可以在我的应用程序的每个窗口中使用,但如果它是文本输入或其他内容则不行。使用该解决方案可能是错误的,为此我提供了一个链接,如果是这样,我将非常感谢向我解释如何正确使用它的人。

【问题讨论】:

【参考方案1】:

热键的最佳做法是对其使用修饰符。

我建议添加 CTRL 键作为命令的修饰符,这样用户就必须点击 CTRL + P 触发您的热键。然后在文本框或其他地方输入 P 不会导致问题。

<KeyBinding Modifiers="Ctrl" Key="P" Command="Binding SomeCommand"> 
</KeyBinding>

【讨论】:

以上是关于如何制作“全局”wpf 应用程序热键的主要内容,如果未能解决你的问题,请参考以下文章

WPF Hotkey 一键,无修饰键

如何使用 WPF 和 .NET 3.5 注册全局热键以说出 CTRL+SHIFT+(LETTER)?

制作“热键”以聚焦 WPF 中的文本框

WPF 窗体快捷键(热键)

WPF 窗体快捷键(热键)

WPF 快捷键(窗体)