У меня есть обработчик PreviewKeyDown на моем главном окне, который обрабатывает клавиши вверх и вниз, поэтому я могу перемещаться с помощью клавиатуры между моими элементами управления.Global PreviewKeyDown handler vs local PreviewKeyDown handler
Теперь у меня есть проблема с тем, что в некоторых текстовых блоках я также хочу использовать клавиши вверх/вниз. Это кажется невозможным, потому что другой обработчик, похоже, сначала проглотит ключи.
Возможно ли, что когда один из этих элементов управления TextBox сфокусирован, они сначала получают клавиши вверх/вниз, а затем проглатывают их, чтобы «глобальный» PreviewKeyDown их не получал?
Несомненно, я мог бы отключить глобальный обработчик, когда такой TextBox получил фокус, но это хороший стиль?
Но я мог бы получить свой собственный TextBox, а затем зарегистрировать обработчик для этого класса? Или, может быть, создать usercontrol? – codymanix
Я думаю, что это сработает, но я не уверен. Это определенно стоит попробовать. – Andy
Жаль, что это не сработает. Я использовал EventManager.RegisterClassHandler (typeof (TextBox), TextBox.PreviewKeyDownEvent, новый KeyEventHandler (WatchOutHandler)) и другие варианты, но глобальный обработчик, кажется, всегда называется первым. – codymanix