TabIndex
和 KeyboardNavigation.TabIndex
在 WPF 中有什么区别?何时使用每个选项?TabIndex
和 KeyboardNavigation.TabIndex
在 WPF 中有什么区别?何时使用每个选项?@akjoshi 在他的回答中提到了一个非常重要的 TabIndex 信息,但我认为需要更多的解释。
如果你有一个重复项目的 ItemsControl
,如果不小心处理,你会得到像这样的tab顺序。
解决方法很简单:
将此附加属性应用于每个重复项的主容器。
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类还提供了许多其他功能来设置聚焦导航,例如Tab导航行为、KeyboardNavigationMode等。
通过设置附加的KeyboardNavigation属性TabNavigation、ControlTabNavigation和DirectionalNavigation,可以更改导航容器的导航行为。这些属性的类型为KeyboardNavigationMode,可能的值包括Continue、Local、Contained、Cycle、Once和None。默认值是Continue,这意味着该元素不是导航容器。
http://msdn.microsoft.com/en-us/library/aa969768.aspx#Keyboard_Navigation