TabIndex против KeyboardNavigation.TabIndex в WPF - PullRequest
17 голосов
/ 02 июня 2011

В чем разница между TabIndex и KeyboardNavigation.TabIndex в WPF?Когда использовать каждый?

Ответы [ 2 ]

12 голосов
/ 17 сентября 2012

@ akjoshi включил в свой ответ очень важную информацию о TaxIndex, но я подумал, что поможет немного больше объяснений.

Если у вас есть ItemsControl, повторяющий элемент, который выв итоге вы получите порядок следования, например , если вы не будете осторожны.

enter image description here

Решение простое:

Примените этоприкрепленное свойство к основному контейнеру каждого повторяющегося элемента.

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>
9 голосов
/ 02 июня 2011

Некоторые элементы управления, такие как CheckBox, имеют свойство TabIndex, но не все элементы управления имеют это свойство, но вы можете захотеть, чтобы они имели фокус и участвовали в навигации фокуса, в таких случаях можно использовать присоединенное свойство KeyboardNavigation.TabIndex. Примером такого управления является Hyperlink

Кроме этого класса KeyboardNavigation предоставляет множество других функций для настройки навигации фокуса, таких как поведение навигации по вкладкам, KeyboardNavigationMode и т. Д.

Навигационное поведение контейнер навигации может быть изменен установка прикрепленного Свойства KeyboardNavigation TabNavigation, ControlTabNavigation, и Направленная навигация. Эти свойства имеют тип KeyboardNavigationMode и Возможные значения: Continue, Local, Содержится, Цикл, Один раз и Нет. значение по умолчанию - Продолжить, что означает элемент не является навигацией контейнер.

http://msdn.microsoft.com/en-us/library/aa969768.aspx#Keyboard_Navigation

...