2017-06-15 44 views
0

私はVisualTreeHelperを使用してVisualTreeを通じてWPFアプリケーションをトラバースしています。これはDependencyObjectsです。DependencyObjectをAutomationElementに変換する方法はありますか

for(int i = 0; i < VisualTreeHelper.GetChildrenCount(rootObject); i++) { 
    var child = VisualTreeHelper.GetChild(rootObject, i); 
} 

しかし、私が探しているオブジェクト(この場合はそのボタン)を見つけたら、それを「押す」/呼び出す必要があります。 AutomationElementInvokePatternを使用してボタンを呼び出しました。

したがって、問題は次のとおりです。DependencyObjectsをAutomationElementに変換するにはどうすればよいですか?
または:DependancyObjectをどのように呼び出すのですか?
または、特定のDependencyObjects線量と同じWPF要素を指すAutomationElementを作成するにはどうすればよいですか?

EDIT1:
私は私がコントロールにDependancyObjectを変換できることを発見しました。

var childVisual = VisualTreeHelper.GetChild(rootObject, i); 
var childInstance = childVisual as Control; 

ただし、問題は次のとおりです。コントロールを呼び出すにはどうすればよいですか?
または、コントロールをAutomationElementに変換するにはどうすればよいですか?

答えて

0

私はButtonBaseへのAutomationElementをキャストし、反射によってその「読み込み時」メソッドを呼び出すことができ判明:

var childVisual = VisualTreeHelper.GetChild(rootObject, i); 
var btnToInvoke = childVisual as ButtonBase; 
MethodInfo clickMethodInfo = typeof(Button).GetMethod("OnClick", 
    BindingFlags.NonPublic | BindingFlags.Instance); 
clickMethodInfo.Invoke(btnToInvoke, new object[] {}); 
関連する問題