.net WPF中的TabIndex与KeyboardNavigation.TabIndex

.net WPF中的TabIndex与KeyboardNavigation.TabIndex,.net,wpf,focus,tabindex,keyboard-navigation,.net,Wpf,Focus,Tabindex,Keyboard Navigation,WPF中的TabIndex和KeyboardNavigation.TabIndex之间有什么区别?何时使用每个控件?某些控件(如复选框具有选项卡索引属性,但并非所有控件都具有此属性,但您可能希望它们具有焦点并参与焦点导航、附加属性键盘导航。在这种情况下,可以启用选项卡索引。这种控制的一个例子是 除此之外,该类还提供了许多其他功能来设置焦点导航,如选项卡导航行为、键盘导航模式等 计算机的导航行为 导航容器可以通过以下方式更改: 设置附加的 键盘导航属性 TabNavigation,ControlT

WPF中的
TabIndex
KeyboardNavigation.TabIndex
之间有什么区别?何时使用每个控件?

某些控件(如
复选框
具有
选项卡索引
属性,但并非所有控件都具有此属性,但您可能希望它们具有焦点并参与焦点导航、附加属性
键盘导航。在这种情况下,可以启用选项卡索引。这种控制的一个例子是

除此之外,该类还提供了许多其他功能来设置焦点导航,如选项卡导航行为、键盘导航模式等

计算机的导航行为 导航容器可以通过以下方式更改: 设置附加的 键盘导航属性 TabNavigation,ControlTabNavigation, 和定向导航。这些 属性类型为 键盘导航模式和 可能的值为Continue、Local、, 包含、循环、一次和无。这个 默认值为Continue,这意味着 元素不是导航 容器

@akjoshi在他的回答中包含了关于TabIndex的一条非常重要的信息,但我认为多做一点解释会有所帮助

如果你有一个
ItemsControl
重复一个项目,如果你不小心的话,你会得到一个

解决方案很简单:

将此附加属性应用于每个重复项的主容器

KeyboardNavigation.TabNavigation="Local" 
它有各种各样的值,但这是用于嵌套控件的值

注意我已经为
ItemsControl
本身设置了
IsTabStop=false
(不,这不是上图的实际代码)


<ItemsControl ItemsSource="{Binding CurrentItem.CustomsItems}" IsTabStop="False">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <ctl:CustomsItem KeyboardNavigation.TabNavigation="Local" Margin="0,0,0,8"/>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>