如何在 Window 的所有控件中监听键盘事件?
How can I listen to keyboard events in all controls of a Window?
我必须在 Window 中监听键盘事件,但如果我使用此代码:
MyWindow.KeyDown += new KeyEventHandler(MainWindow_KeyDown);
我没有在文本框等其他控件中触发事件。如何从所有控件获取事件并停止将事件传播到其原始控件?
编辑
我试过这段代码:
EventManager.RegisterClassHandler(typeof(Window), Window.KeyDownEvent, new KeyEventHandler(MainWindow_KeyDown));
我适用于大多数情况,但例如当我在文本框内时它没有获得 HOME 键。
this.PreviewKeyDown += MainWindow_PreviewKeyDown;
事件处理程序:
private void MainWindow_PreviewKeyDown(object sender, KeyEventArgs e)
{
// do some stuff
e.Handled = true // Stops propagating the event
}
我必须在 Window 中监听键盘事件,但如果我使用此代码:
MyWindow.KeyDown += new KeyEventHandler(MainWindow_KeyDown);
我没有在文本框等其他控件中触发事件。如何从所有控件获取事件并停止将事件传播到其原始控件?
编辑
我试过这段代码:
EventManager.RegisterClassHandler(typeof(Window), Window.KeyDownEvent, new KeyEventHandler(MainWindow_KeyDown));
我适用于大多数情况,但例如当我在文本框内时它没有获得 HOME 键。
this.PreviewKeyDown += MainWindow_PreviewKeyDown;
事件处理程序:
private void MainWindow_PreviewKeyDown(object sender, KeyEventArgs e)
{
// do some stuff
e.Handled = true // Stops propagating the event
}