WPF 中的 TabIndex 与 KeyboardNavigation.TabIndex

发布于 2024-11-10 18:22:14 字数 92 浏览 3 评论 0原文

WPF 中的 TabIndexKeyboardNavigation.TabIndex 有什么区别?何时分别使用?

What is the difference between TabIndex and KeyboardNavigation.TabIndex in WPF? When to use each?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

淡莣 2024-11-17 18:22:14

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

如果您有一个 ItemsControl 重复一个项目,您最终会得到与 tab 顺序类似如果你不小心的话,就会出现这个

在此处输入图像描述

解决方案很简单:

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

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>

@akjoshi included a very important piece of information about TabIndex in his answer but I thought a little more explanation would help.

If you have an ItemsControl repeating an item you will end up with a tab order like this if you're not careful.

enter image description here

The solution is simple :

Apply this attached property to the main container of each repeated item.

KeyboardNavigation.TabNavigation="Local" 

This enumeration has all kinds of values, but this is the one to use for nested controls.

Note I've set IsTabStop=false for the ItemsControl itself (and no this isn't the actualy code for the graphic above).

<ItemsControl ItemsSource="{Binding CurrentItem.CustomsItems}" IsTabStop="False">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <ctl:CustomsItem KeyboardNavigation.TabNavigation="Local" Margin="0,0,0,8"/>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
白芷 2024-11-17 18:22:14

某些控件(例如 CheckBox)具有 TabIndex 属性,但并非所有控件都具有此属性,但您可能希望它们具有焦点并参与焦点导航,附加属性 KeyboardNavigation。在这种情况下可以使用 TabIndex 。此类控制的示例是 超链接

除此之外KeyboardNavigation 类提供了许多其他功能来设置焦点导航,例如选项卡导航行为、KeyboardNavigationMode 等。

a的导航行为
导航容器可以通过以下方式更改
设置附加的
键盘导航属性
选项卡导航,控制选项卡导航,
和定向导航。这些
属性属于类型
键盘导航模式和
可能的值为“继续”、“本地”、
包含、循环、一次和无。这
默认值为Continue,这意味着
该元素不是导航
容器。

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

Some controls like CheckBox have TabIndex property but not all controls have this property, but you may want them to have focus and participate in focus navigation, attached property KeyboardNavigation.TabIndex can be used on in such cases. An example of such control is Hyperlink

Apart from this KeyboardNavigation class provides a lot other functionality to set focus navigation, like tab navigation behavior, KeyboardNavigationMode etc.

The navigation behavior of a
navigation container can be changed by
setting the attached
KeyboardNavigation properties
TabNavigation, ControlTabNavigation,
and DirectionalNavigation. These
properties are of type
KeyboardNavigationMode and the
possible values are Continue, Local,
Contained, Cycle, Once, and None. The
default value is Continue, which means
the element is not a navigation
container.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文