繁体   English   中英

自定义控件上的UI自动化:需要使用CTRL + TAB(选项卡重点放在第一个对象上)

[英]UI Automation on Custom Control: Need to use CTRL+TAB (tab focuses on first object)

我有一个从ListView派生的自定义控件。 此列表视图使用GridView包含两列(每列适当地模板化):一列是标题(只是一个标签),另一列是控件。

使用时,它看起来像这样:


<l:CoolList>
    <TextBox l:CoolList.Caption="Name" Text={Binding Name} />
    <TextBox l:CoolList.Caption="Age" Text={Binding Age} />
    <WrapPanel>
        <Button Click="btnOkay_click" />
        <Button Click="btnCancel_click" />
    </WrapPanel>
</l:CoolList>

最终看起来像这样(一切都很好地对齐):

Name: [____________]
 Age: [____________]
      [Okay][Cancel]

现在,当我想使用TAB遍历这些文本框时,它仅专注于第一个文本框。 要将焦点更改为其他文本框,必须按CTRL + TAB。

我浏览了MSDN网站,看起来我可能需要实现AutomationPeer,但是它确实使我应该做的事情感到困惑。 有经验的人是否知道如何使子文本框可访问(仅使用TAB)?

注意:WPFToolKit数据网格是我要寻找的一个很好的例子。 您可以按TAB键(而不是CTRL + TAB键)浏览每个网格项目。 他们似乎为DataGrid,每一行,每一行演示者,每个单元格和每个单元格演示者实现了AutomationPeers。 我正在寻找一个通用的解决方案,通过该解决方案,我可以将控件的子级暴露给TAB。

题:

如何使TAB(可能是ListViewItem的子级)可以访问ListView的项目?

事实证明,有一个更简单的解决方案,而无需重新实现自动化对等项(因为我的自定义列表已经有其子项的有效对等项)。

我要做的就是在清单的样式上设置以下内容:

<Setter Property="KeyboardNavigation.TabNavigation" Value="Cycle" />

有关更多信息,请参见MSDN上的“ 焦点概述”页面

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM