2013-05-28 50 views
4

我們有一個帶有StartPage.xaml的應用程序,其中TabControl的控件模板定義了一些網格和堆棧面板。在xaml中間的該模板中有一個itemPresenter,並在其下面有一個堆棧面板。雖然它對用戶來說工作正常,但MS UI自動化只能看到項目展示者內的選項卡項目,而沒有在模板中的同一級別定義的項目。 我試圖在MS UIA無法看到的堆棧面板中添加標準按鈕,以檢查這是否與我們擁有的自定義用戶控件有關,但該標準按鈕對於MS UIA也不可見。 如果我使用Snoop,我可以在模板層次結構的相應級別的snoop樹中看到模板中的所有元素。但MS UIA仍然無法找到它們。頁面上的一些控件對於MS UI自動化不可見

控件可能會出現什麼問題,防止MS UIA在頁面上找到它們?

回答

4

最後我能夠檢測到問題。 TabControl使用一堆不同的控件進行模板化,而AutomationPeer保持不變,只知道TabItems爲TabControl子項。 我分類了TabControl並覆蓋了OnCreateAutomation來創建並返回我的GenericAutomationPeer,它可以枚舉此控件的所有子UIElements,並且瞧 - UIA Verify現在可以從TabControl模板中看到其他控件。

GenericAutomationPeer實現在這裏找到:http://www.colinsalmcorner.com/2011/11/genericautomationpeer-helping-coded-ui.html 非常感謝該文章的作者!