20

TabIndexWPF和WPF有什么区别KeyboardNavigation.TabIndex?什么时候使用每个?

4

2 回答 2

14

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

如果你有一个重复的项目,如果你不小心,ItemsControl你最终会得到这样的标签顺序。

在此处输入图像描述

解决方案很简单:

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

KeyboardNavigation.TabNavigation="Local" 

枚举具有各种值,但这是用于嵌套控件的值。

注意我已经IsTabStop=falseItemsControl自己设置了(不,这不是上图的实际代码)。

<ItemsControl ItemsSource="{Binding CurrentItem.CustomsItems}" IsTabStop="False">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <ctl:CustomsItem KeyboardNavigation.TabNavigation="Local" Margin="0,0,0,8"/>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
于 2012-09-17T00:34:54.137 回答
12

有些控件像CheckBoxTabIndex属性但不是所有的控件都有这个属性,但是你可能希望它们有焦点并参与焦点导航,KeyboardNavigation.TabIndex在这种情况下可以使用附加属性。这种控制的一个例子是Hyperlink

除了这个KeyboardNavigation类提供了很多其他功能来设置焦点导航,比如标签导航行为、KeyboardNavigationMode 等。

可以通过设置附加的 KeyboardNavigation 属性 TabNavigation、ControlTabNavigation 和 DirectionalNavigation 来更改导航容器的导航行为。这些属性的类型为 KeyboardNavigationMode,可能的值为 Continue、Local、Contained、Cycle、Once 和 None。默认值为 Continue,这意味着该元素不是导航容器。

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

于 2011-06-02T11:58:35.627 回答