2013-08-07 2 views
0

Мне нужно отключить ввод клавиатуры для всех элементов пользовательского интерфейса, за исключением одного или двух исключений.Отключить клавиатуру во всем мире для окна WPF

Вещь, мне нужны клавиши со стрелками для управления, поэтому я добавил KeyEventHandler на уровне MainWindow и добавил еще один элемент UI, например Tab Items, Textbox, чтобы они игнорировали вход, когда они получили фокус. В итоге у меня получилось довольно багги. Я все еще могу просматривать, например. через элементы табуляции событие управления иногда не срабатывает. Мне нужен более надежный способ сделать это.

Любые предложения приветствуются!

+0

Вы можете попытаться поймать каждое событие KeyDown и установить e.Handled = true; на каждом UserControl вы хотите игнорировать клавиатуру. – Sonhja

+0

То, что я пробовал, но это приводит к ошибочному поведению –

ответ

0

Клавиши со стрелками по умолчанию не считаются клавишами ввода. Поэтому они все еще просматривают элементы управления в окне. Чтобы изменить это поведение, вы можете подписаться на событие PreviewKeyDown (http://msdn.microsoft.com/en-us/library/system.windows.uielement.previewkeydown.aspx) и установить PreviewKeyDownEventArgs.IsInputKey = true;, см. http://msdn.microsoft.com/en-us/library/system.windows.forms.previewkeydowneventargs.isinputkey.aspx. Затем клавиши со стрелками также вызовут другие обработчики ключевых событий как KeyDown.

Смежные вопросы