Я просматриваю приложение WPF через его VisualTree, используя VisualTreeHelper, который возвращает Объекты зависимостей.
for(int i = 0; i < VisualTreeHelper.GetChildrenCount(rootObject); i++) {
var child = VisualTreeHelper.GetChild(rootObject, i);
}
Однако, как только я найду объект, который ищу (в данном случае это кнопка), мне нужно «нажать»/вызвать его. Я успешно вызвал кнопку, используя InvokePattern в Элемент автоматизации.
private void ClickBtn(AutomationElement btnElement) {
InvokePattern btnPattern = btnElement.GetCurrentPattern(
InvokePattern.Pattern) as InvokePattern;
btnPattern.Invoke();
}
Итак, проблема стоит: как мне преобразовать DependencyObjects в AutomationElement?
Или: Как вызвать DependancyObject?
Или: Как мне создать AutomationElement, который указывает на тот же элемент WPF, что и заданная доза DependencyObjects?
Edit1:
Я обнаружил, что могу преобразовать объект DependancyObject в элемент управления.
var childVisual = VisualTreeHelper.GetChild(rootObject, i);
var childInstance = childVisual as Control;
Однако проблема остается: как мне вызвать элемент управления?
Или: Как преобразовать элемент управления в элемент автоматизации?