加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

wpf – 页面上的某些控件对于MS UI Automation不可见

发布时间:2020-12-14 03:51:44 所属栏目:Windows 来源:网络整理
导读:我们有一个使用StartPage.xaml的应用程序,其中TabControl的控件模板定义了一些网格和堆栈面板.在xaml中间的模板中有一个itemPresenter,下面是一个堆栈面板.虽然它适用于用户,但MS UI自动化只能看到项目展示器内的选项卡项,而在模板中的同一级别上没有定义任
我们有一个使用StartPage.xaml的应用程序,其中TabControl的控件模板定义了一些网格和堆栈面板.在xaml中间的模板中有一个itemPresenter,下面是一个堆栈面板.虽然它适用于用户,但MS UI自动化只能看到项目展示器内的选项卡项,而在模板中的同一级别上没有定义任何其他内容.
我试图在堆栈面板中添加标准按钮,MS UIA无法查看该按钮是否存在与我们自定义用户控件相关的问题,但MS UIA也看不到该标准按钮.
如果我使用Snoop,我可以在模板层次结构的相应级别上的snoop树中看到模板中的所有元素.但MS UIA仍然无法找到它们.

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

解决方法

最后我能够发现问题. TabControl模板化了许多不同的控件,而AutomationPeer保持不变,只知道TabItems为TabControl子项.
我将TabControl子类化并覆盖了OnCreateAutomation以创建并返回我的GenericAutomationPeer,它可以枚举此控件的所有子UIElements并且瞧 – UIA Verify现在可以看到来自TabControl模板的其他控件.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读