我們的應用程序有一個畫布,這是我們添加繪圖視覺效果(如線,多邊形等)如何識別UIAutomation中的WPF繪圖畫面?
// sample code
var canvas = new Canvas(); // create canvas
var visuals = new VisualCollection(canvas); // link the canvas to the visual collection
visuals.Add(new DrawingVisual()); // add the visuals to the canvas
visuals.Add(new DrawingVisual());
我們的目標是通過自動化這些視覺效果添加到畫布和驗證他們適當增加。我們使用基於微軟UIAutomation的框架。
當使用「Inspect」等工具檢查視覺結構時,我找不到畫布。做了一些調查並發現您需要覆蓋UIElement
中的OnCreateAutomationPeer
方法,並返回適用的AutomationPeer
對象,以便能夠在自動化中看到該方法。
作出了改變,現在我可以看到畫布,但是我仍然無法看到畫布下添加的任何視覺效果。
任何人都可以幫我理解這個問題是什麼?
事情試圖/替代品:
- 試圖聘請OnCreateAutomationPeer技術,但
DrawingVisual
小號不從UIElement
派生,我不能添加UIElement
小號 到Canvas.VisualCollection
。 - 圖像識別是一個選項,但我們 試圖避免它出於性能/維護考慮。
感謝您的答覆西蒙。在畫布上使用DrawingVisual而不是UIElements是有意識地幫助表演的決定。我們的應用程序有一個噸形狀添加到畫布。我想知道是否有另一種解決方法。 – Schu 2014-10-02 12:53:36
@Schu - 我已經更新了我的答案。 – 2014-10-02 14:15:01
再次感謝西蒙。這應該工作。我有類似的東西,我在OnCreateAutomationPeer內部傳遞視覺效果,並試圖跟上視覺集合的變化,並且在那裏停留。您通過在所有者下添加的Children屬性解決了該問題。 – Schu 2014-10-02 17:43:43