WPF Запретить кнопке брать фокус с любого другого элемента управления

У меня есть "экранная клавиатура" с несколькими кнопками вверх / вниз / влево / вправо / выбора.

Кнопка выбора фактически является щелчком, а клавиши со стрелками запускают соответствующую клавишу вверх / вниз / влево / вправо.

Проблема в том, что при выборе поля со списком я не могу нажимать кнопки вниз / вверх для навигации по элементам в списке. Это потому, что поле со списком автоматически закрывается при потере фокуса. Я вижу аналогичные проблемы, возникающие с другими элементами управления, поэтому я хотел бы посмотреть, есть ли способ сделать следующее.

Для определенных кнопок (вверх / вниз / и т. Д.) При нажатии запускается событие щелчка, но не берут фокус с того, что в данный момент находится в фокусе. Это позволит раскрывающемуся списку combox оставаться открытым при нажатии вверх / вниз для навигации по элементам.

Я попытался установить Focusable = False для кнопок навигации, но фокус по-прежнему убирается с поля со списком, и раскрывающийся список закрывается.

Есть идеи / предложения?

заранее спасибо


person Paul Knopf    schedule 12.02.2013    source источник
comment
В winforms есть свойство KeyPreview в форме, которое заставляет любое ключевое событие дочерних элементов управления происходить первым в содержащей форме. Затем вы можете переместить свои элементы и установить Handled свойство KeyEventArgs на true, чтобы предотвратить продолжение события и изменение фокуса. Может быть, есть похожая концепция в окнах wpf.   -  person RoadBump    schedule 12.02.2013


Ответы (1)


Этого не происходит из-за того, что делает ваш Buttons, поэтому изменение их состояния фокуса не будет иметь никакого значения. ComboBoxes закрываются, когда вы щелкаете в любом месте за их пределами, включая пустое пространство, неинтерактивные элементы управления, другие окна ...

person John Bowen    schedule 12.02.2013