将选项卡导航限制为 UI 元素
Limit tab navigation to a UI Element
我正在构建一个 UWP 应用程序。我目前正在努力使它更易于访问,所以我只通过键盘使用它并使用 tab 键导航。
有时我会使用所有屏幕显示带有 2 个按钮的 UserControl,而将其余页面元素留在背景中。但是,如果我使用选项卡导航到这 2 个按钮,焦点会迅速转到背景元素,而这正是我要避免的。
我希望选项卡仅关注我显示的用户控件中的那 2 个按钮。
我注意到某些框架元素(如 ContentDialog)会自动执行此操作,我想要相同的行为。
关于如何限制 UserControl 内的选项卡导航有什么想法吗?
当您显示 UserControl
时,您可以通过将 IsTabStop
依赖项 属性 设置为 false 来触发布局修改背景中存在的元素。
或者你也可以禁用背景中的元素,但这也会修改控件的外观,这对于你的特定意图来说可能是不希望的。
- 万一有各种各样的元素需要有它的
IsTabStop
设置为 false,而不是定义标识符
具有 x:Name
的属性,并且必须在其中引用每个单独的属性
代码隐藏,我建议循环布局 Children
依赖项 属性 并以此方式修改控件属性。
更新:
我完全误解了你的要求。重读后,我明白了你的目标是什么,而且根据文档,这些目标似乎是可以实现的!
查看 Tab Navigation here and Control Group 文档,表明您可以使用 API 的以下属性自定义控件导航:
XYFocusKeyboardNavigation
enables arrow key navigation between
controls
TabFocusNavigation
indicates whether there are multiple tab
stops or single tab stop
FindFirstFocusableElement
and
FindLastFocusableElement
sets focus on the first item with Home key
and the last item with End key
查看模板,我们看到为 ContentDialog
定义的以下 VisualState
:
<VisualState x:Name="DialogShowing">
<VisualState.Setters>
<Setter Target="LayoutRoot.Visibility" Value="Visible" />
<Setter Target="BackgroundElement.TabFocusNavigation" Value="Cycle" />
</VisualState.Setters>
</VisualState>
显示对话框时会出现这种视觉状态,它将 TabFocusNavigation
依赖项 属性 设置为 Cycle 意味着所有子项都将获得一次焦点当 属性 设置为这种方式时,选项卡导航将循环。
在上面的链接中,文档非常棒,并且可以为 TabFocusNavigation
设置的每个可能值都有一个图形表示。
您的 UserControl
未按预期工作的原因是它的导航行为遵循 Local 场景的约定。
我正在构建一个 UWP 应用程序。我目前正在努力使它更易于访问,所以我只通过键盘使用它并使用 tab 键导航。
有时我会使用所有屏幕显示带有 2 个按钮的 UserControl,而将其余页面元素留在背景中。但是,如果我使用选项卡导航到这 2 个按钮,焦点会迅速转到背景元素,而这正是我要避免的。
我希望选项卡仅关注我显示的用户控件中的那 2 个按钮。
我注意到某些框架元素(如 ContentDialog)会自动执行此操作,我想要相同的行为。
关于如何限制 UserControl 内的选项卡导航有什么想法吗?
当您显示 UserControl
时,您可以通过将 IsTabStop
依赖项 属性 设置为 false 来触发布局修改背景中存在的元素。
或者你也可以禁用背景中的元素,但这也会修改控件的外观,这对于你的特定意图来说可能是不希望的。
- 万一有各种各样的元素需要有它的
IsTabStop
设置为 false,而不是定义标识符 具有x:Name
的属性,并且必须在其中引用每个单独的属性 代码隐藏,我建议循环布局Children
依赖项 属性 并以此方式修改控件属性。
更新:
我完全误解了你的要求。重读后,我明白了你的目标是什么,而且根据文档,这些目标似乎是可以实现的!
查看 Tab Navigation here and Control Group 文档,表明您可以使用 API 的以下属性自定义控件导航:
XYFocusKeyboardNavigation
enables arrow key navigation between controls
TabFocusNavigation
indicates whether there are multiple tab stops or single tab stop
FindFirstFocusableElement
andFindLastFocusableElement
sets focus on the first item with Home key and the last item with End key
查看模板,我们看到为 ContentDialog
定义的以下 VisualState
:
<VisualState x:Name="DialogShowing">
<VisualState.Setters>
<Setter Target="LayoutRoot.Visibility" Value="Visible" />
<Setter Target="BackgroundElement.TabFocusNavigation" Value="Cycle" />
</VisualState.Setters>
</VisualState>
显示对话框时会出现这种视觉状态,它将 TabFocusNavigation
依赖项 属性 设置为 Cycle 意味着所有子项都将获得一次焦点当 属性 设置为这种方式时,选项卡导航将循环。
在上面的链接中,文档非常棒,并且可以为 TabFocusNavigation
设置的每个可能值都有一个图形表示。
您的 UserControl
未按预期工作的原因是它的导航行为遵循 Local 场景的约定。