在 C# 中重新分配 Windows 个默认键盘快捷键?

Reassigning Windows default keyboard shortcuts in C#?

我重新询问 this question 因为假设 OP 正在谈论重新定义 Windows 的快捷方式。我想为我的申请做这件事。存在其他几个类似的问题,但所有答案似乎都没有抓住要点。

我试图在我的 C#/WPF 应用程序中为 'space' 分配一个键盘快捷键,并将其与 "pause/continue" 按钮配对。我目前正在尝试使用类似于 this answer 的 RoutedCommand。但是,'space' 似乎是 Windows(或可能是 C#)中的默认快捷方式,它会重新单击上次单击的按钮。如果您按下的最后一个按钮是我尝试分配快捷方式的按钮,那就太好了!但除此之外就不那么好了。

如何删除 'space' 的默认使用以保留它供我的按钮使用?

由于正常的 Button 将捕获 KeyDown 事件(如果它具有焦点),您最好的选择可能是在最顶层收听 PreviewKeyDown 事件。在事件处理程序中查找 Space 键,将其重定向到 Pause/Continue 并取消事件参数,这样它就不会传播到当前聚焦按钮的 KeyDown 事件。