学习任务。编写键盘训练器。用户在屏幕上看到一个字符串,他必须按下键盘上的键。对于大多数键,一切都通过添加到 Window 来决定
KeyDown="Key_Down_Handler"
空间不能这样处理是有问题的。如果没有选择任何元素,那么它将起作用,但如果选择了它,它要么什么也不做,或者,如果选择了一个按钮,则单击它。我还需要一个函数,例如 DoSomething () 在按下空格键时起作用
试图通过 Window.InputBindings 来做
<Window.InputBindings>
<KeyBinding ????="DoSomething" Key="Space"/>
</Window.InputBindings>
但我无法弄清楚如何将按钮按下绑定到所需的方法。另外,还需要空格键的标准功能不起作用,单击所选元素。Enter 键也是如此。如何才能做到当在应用程序中的任何地方按下这些键时,都会触发 DoSomething 函数并且单击所选元素不起作用?
您需要在窗口级别使用 PreviewKeyDown 事件(它向下广播可视化树层次结构)。在处理程序中,设置 KeyEventArgs.Handled=true 以便控件的标准处理不起作用。