В чем разница между TabIndex
и KeyboardNavigation.TabIndex
в WPF? Когда использовать каждый?
TabIndex против KeyboardNavigation.TabIndex в WPF
Ответ 1
@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>
Ответ 2
Некоторые элементы управления, такие как CheckBox
, имеют свойство TabIndex
, но не все элементы управления имеют это свойство, но вы можете захотеть, чтобы они имели фокус и участвовали в навигации фокусировки, в таких случаях можно использовать прикрепленное свойство KeyboardNavigation.TabIndex
. Примером такого управления является Hyperlink
Помимо этого KeyboardNavigation класс предоставляет множество других функций для настройки навигации по фокусу, например, поведение навигации на вкладке, KeyboardNavigationMode и т.д.
Навигационное поведение навигационный контейнер можно изменить установка прилагаемого Свойства клавиатуры TabNavigation, ControlTabNavigation, и Направленная Навигация. Эти свойства имеют тип KeyboardNavigationMode и возможные значения: Continue, Local, Содержат, Цикл, Один раз и Нет. значение по умолчанию - "Продолжить", что означает элемент не является навигацией контейнер.
http://msdn.microsoft.com/en-us/library/aa969768.aspx#Keyboard_Navigation