我在构建一个UWP应用。我目前正在努力让它更易于访问,因此我只使用键盘并使用 tab 键进行导航。
有时我使用所有屏幕显示带有2个按钮的UserControl,其余页面元素保留在背景中。但是如果我使用tab导航到这两个按钮,焦点会快速转移到后台的元素,这就是我想要避免的。
我希望标签只关注我显示的用户控件中的那两个按钮。
我注意到像ContentDialog这样的一些框架元素会自动执行此操作,我也喜欢相同的行为。
关于如何限制UserControl中的标签导航的任何想法?
答案 0 :(得分:2)
当您显示UserControl
时,您可以通过将IsTabStop
依赖项属性设置为 false 来触发背景中存在的元素,从而触发对布局的修改。
要么你或者你也可以在背景中禁用这些元素,但这也会修改控件的外观,这可能是你特定意图所不希望的。
IsTabStop
设置为false,而不是定义标识符
属性为x:Name
并且必须引用每个单独的属性
代码隐藏,我建议循环遍历布局Children
依赖属性并以这种方式修改控件属性。我完全误解了你的要求。重新阅读后,我了解您的目标是什么,这些似乎可以根据文档实现!
查看此处Tab Navigation和Control Group文档,表明您可以使用API的以下属性自定义控件导航:
XYFocusKeyboardNavigation
启用箭头键之间的导航 对照
TabFocusNavigation
表示是否有多个标签 停止或单个制表位
FindFirstFocusableElement
和FindLastFocusableElement
使用Home键将焦点放在第一个项目上 和带有结束键的最后一项
查看模板,我们看到为VisualState
定义了以下ContentDialog
:
<VisualState x:Name="DialogShowing">
<VisualState.Setters>
<Setter Target="LayoutRoot.Visibility" Value="Visible" />
<Setter Target="BackgroundElement.TabFocusNavigation" Value="Cycle" />
</VisualState.Setters>
</VisualState>
当显示对话框并将TabFocusNavigation
依赖属性设置为循环时,会出现此可视状态,这意味着所有子项都将获得一次焦点,并且标签导航将循环显示就是这样设定的。
在上面的链接中,文档非常棒,并且可以为TabFocusNavigation
设置每个可能值的图形表示。
您的UserControl
未按预期工作的原因是因为它的导航行为遵循 Local 方案的约定。