【问题标题】:Some controls on a page are not visible for MS UI Automation页面上的某些控件对于 MS UI 自动化不可见
【发布时间】:2013-05-29 20:39:42
【问题描述】:

我们有一个带有 StartPage.xaml 的应用程序,其中 TabControl 的控件模板定义了一些网格和堆栈面板。在 xaml 中间的那个模板中有一个 itemPresenter,它下面有一个堆栈面板。虽然它对用户来说工作得很好,但 MS UI 自动化只能看到项目演示器内的选项卡项目,而没有其他在模板中同一级别上定义的内容。 我尝试在 MS UIA 看不到的堆栈面板中添加标准按钮,以检查这是否是与我们拥有的自定义用户控件相关的问题,但该标准按钮对于 MS UIA 也是不可见的。 如果我使用 Snoop,我可以在模板层次结构的相应级别上的 snoop 树中查看模板中的所有元素。但是 MS UIA 仍然找不到它们。

阻止 MS UIA 在页面上找到它们的控件会出现什么问题?

【问题讨论】:

    标签: wpf microsoft-ui-automation


    【解决方案1】:

    最后我能够检测到问题。 TabControl 使用一堆不同的控件进行模板化,而 AutomationPeer 保持不变,仅将 TabItems 视为 TabControl 子项。 我继承了 TabControl 并覆盖了 OnCreateAutomation 以创建并返回我的 GenericAutomationPeer,它可以枚举此控件的所有子 UIElement,瞧 - UIA 验证现在可以从 TabControl 模板中看到其他控件。

    GenericAutomationPeer 实现在这里找到:http://www.colinsalmcorner.com/2011/11/genericautomationpeer-helping-coded-ui.html 非常感谢那篇文章的作者!

    【讨论】:

      猜你喜欢
      • 2019-03-14
      • 1970-01-01
      • 2021-01-04
      • 1970-01-01
      • 2013-02-28
      • 1970-01-01
      • 2013-08-02
      • 2021-04-17
      • 1970-01-01
      相关资源
      最近更新 更多