Dar*_*eny 4 wpf microsoft-ui-automation
我们有一个带有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 非常感谢该文章的作者!
| 归档时间: |
|
| 查看次数: |
2884 次 |
| 最近记录: |