TabIndex и KeyboardNavigation.TabIndex в WPF
В чем разница между TabIndex
а также KeyboardNavigation.TabIndex
в WPF? Когда использовать каждый?
2 ответа
@akjoshi включил в свой ответ очень важную информацию о TaxIndex, но я подумал, что поможет немного больше объяснений.
Если у вас есть ItemsControl
Повторяя элемент, вы получите порядок табуляции, как этот, если вы не будете осторожны.
Решение простое:
Примените это прикрепленное свойство к основному контейнеру каждого повторяющегося элемента.
KeyboardNavigation.TabNavigation="Local"
Это перечисление имеет все виды значений, но это то, что нужно использовать для вложенных элементов управления.
Примечание, которое я установил IsTabStop=false
для ItemsControl
сам (и нет, это не совсем код для рисунка выше).
<ItemsControl ItemsSource="{Binding CurrentItem.CustomsItems}" IsTabStop="False">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ctl:CustomsItem KeyboardNavigation.TabNavigation="Local" Margin="0,0,0,8"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Некоторые элементы управления, такие как CheckBox
иметь TabIndex
свойство, но не все элементы управления имеют это свойство, но вы можете захотеть, чтобы они имели фокус и участвовали в фокусе навигации, прикрепленное свойство KeyboardNavigation.TabIndex
может быть использован в таких случаях. Примером такого контроля является Hyperlink
Помимо этого класса KeyboardNavigation предоставляет множество других функций для настройки навигации фокуса, таких как поведение навигации по вкладкам, KeyboardNavigationMode и т. Д.
Поведение навигации контейнера навигации можно изменить, установив вложенные свойства KeyboardNavigation TabNavigation, ControlTabNavigation и DirectionalNavigation. Эти свойства имеют тип KeyboardNavigationMode, и возможными значениями являются "Продолжить", "Локально", "Содержится", "Цикл", "Один раз" и "Нет". Значением по умолчанию является Продолжить, что означает, что элемент не является контейнером навигации.