WPF中的TabIndex与KeyboardNavigation.TabIndex有何区别?

20
TabIndexKeyboardNavigation.TabIndex 在 WPF 中有什么区别?何时使用每个选项?
2个回答

14

@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>

12

一些控件(例如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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接