gpt4 book ai didi

wpf - 页面上的某些控件对于 MS UI 自动化不可见

转载 作者:行者123 更新时间:2023-12-05 01:08:41 24 4
gpt4 key购买 nike

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

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

最佳答案

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

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

关于wpf - 页面上的某些控件对于 MS UI 自动化不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16793298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com