如何使“全局” WPF应用程序热键

时间:2019-07-12 10:35:16

标签: c# wpf hotkeys commandbinding

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

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

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

1 个答案:

答案 0 :(得分:0)

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

我建议为您的命令添加CTRL键作为修饰符,以便用户必须点击 CTRL + P触发您的热键。然后在文本框中或其他位置键入P不会引起问题。

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