Отключить Жест ключа для TabControl в MVVM - PullRequest
0 голосов
/ 27 марта 2012

Я был несколько озадачен тем, как справиться со следующим: для простоты, скажем, у меня есть два текстовых поля внутри пользовательского элемента управления, содержащиеся на одной вкладке TabControl, и различные другие элементы управления на других вкладках. , которые для этого примера несущественны. Когда мои пользователи нажимают клавишу табуляции, чтобы перейти от одного текстового поля к другому, TabControl фактически переключает вкладки ... само собой разумеется, что такое поведение не может происходить в производственной среде. Можно ли каким-то образом отловить жест клавиши табуляции для активного пользовательского элемента управления, чтобы он не всплывал? До сих пор безуспешно пробовал следующее:

XAML
<TabControl.InputBindings>
     <KeyBinding Gesture="TAB" Command="{Binding CancelTabChangeCommand}"/>
</TabControl.InputBindings>

C#
this.CancelTabChangeCommand = new DelegateCommand<object>(t => { });

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

Любая помощь будет великолепна.

1 Ответ

2 голосов
/ 27 марта 2012

Вы можете установить KeyboardNavigation.TabNavigation на другое KeyboardNavigationMode , чем Continue, чтобы управлять поведением клавиши Tab в указанной области.

Напримерследующее будет держать навигацию вкладки в пользовательском элементе управления:

<local:MyUserControl KeyboardNavigation.TabNavigation="Contained" />
...