Как я могу прослушивать события клавиатуры во всех элементах управления окна? - PullRequest
0 голосов
/ 12 октября 2018

Мне нужно прослушать событие клавиатуры в моем окне, но если я использую этот код:

 MyWindow.KeyDown += new KeyEventHandler(MainWindow_KeyDown);

Я не получаю события, запускаемые в других элементах управления, таких как текстовое поле.Как я могу получить события от ВСЕХ элементов управления и остановить распространение события к его оригинальному элементу управления?

РЕДАКТИРОВАТЬ

Я попробовал этот код:

EventManager.RegisterClassHandler(typeof(Window), Window.KeyDownEvent, new KeyEventHandler(MainWindow_KeyDown));

Я работаю в большинстве случаев, но, например, он не получил клавишу HOME, когда я внутри текстового поля.

1 Ответ

0 голосов
/ 12 октября 2018

Загляните в PreviewKeyDown :

this.PreviewKeyDown += MainWindow_PreviewKeyDown;

Обработчик событий:

private void MainWindow_PreviewKeyDown(object sender, KeyEventArgs e)
{
     // do some stuff
     e.Handled = true // Stops propagating the event
}
...