我正在使用返回DependencyObjects的VisualTreeHelper通过其 VisualTree 遍历 WPF 应用程序。
for(int i = 0; i < VisualTreeHelper.GetChildrenCount(rootObject); i++) {
var child = VisualTreeHelper.GetChild(rootObject, i);
}
但是,一旦我找到我正在寻找的对象(在这种情况下它是一个按钮),我需要“按下”/调用它。我已经在AutomationElement上使用InvokePattern成功调用了一个按钮。
private void ClickBtn(AutomationElement btnElement) {
InvokePattern btnPattern = btnElement.GetCurrentPattern(
InvokePattern.Pattern) as InvokePattern;
btnPattern.Invoke();
}
所以问题是:如何将 DependencyObjects 转换为 AutomationElement?
或者:我如何调用 DependancyObject?
或者:我如何创建一个指向与给定 DependencyObjects 剂量相同的 WPF 元素的 AutomationElement?
Edit1:
我发现我可以将 DependancyObject 转换为控件。
var childVisual = VisualTreeHelper.GetChild(rootObject, i);
var childInstance = childVisual as Control;
但是问题是:我如何调用控件?
或者:如何将控件转换为 AutomationElement?