2016-06-24 180 views
0

我重新询问this question,因为它假设OP正在讨论重新定义Windows的快捷方式。我想为我的应用程序做。还有其他几个类似的问题,但所有的答案似乎都没有考虑到这一点。在C#中重新分配Windows默认键盘快捷键?

我想分配一个键盘快捷方式到我的C#/ WPF应用程序中的“空间”,将它与“暂停/继续”按钮配对。我目前正在尝试使用类似于this answer的RoutedCommand。但是,'space'似乎是Windows(或者C#)中的默认快捷键,它会重新点击最后一次点击的按钮。如果您推送的最后一个按钮是我尝试将快捷方式分配给的那个按钮,这非常棒!但不太好,否则。

如何删除“space”的默认使用以将其保留用于我的按钮?

+2

您是否尝试过创建一个全局'PreviewKeyDown'处理程序,然后取消默认事件('e.Cancel = true')如果空格键被按下? –

+0

用户界面的最重要的质量是它是可发现和可预测的。将按钮的Text属性更改为适当的“暂停”或“继续”,这对所有人都是有意义的,而无需编写手册或编写任何代码:) –

回答

2

由于正常的Button将捕获KeyDown事件,如果它有焦点,最好的办法可能是听最顶层的PreviewKeyDown事件。在事件处理程序中,查找Space键将其重定向到暂停/继续和取消事件栏,以便它不会传播到当前焦点按钮的KeyDown事件。

+0

谢谢,这完全不起作用,但它给我带来了90%的路程。我希望避免顶级重定向。我使用静态路由命令获得成功几乎没有成功,但如果我从ViewModelLocator解析ViewModel,则可以更直接地访问播放/暂停功能。 – metao