Я только начал использовать AutomationElement, потому что мы хотим провести интеграционное тестирование наших пользовательских элементов управления, и я думаю, что мне следует использовать AutomationElement.
Я успешно создал окно с пользовательским элементом управления и могу успешно получить элементы автоматизации как для окна, так и для элемента управления.
// Retrieve the View
System.Windows.Automation.Condition viewCondition = new PropertyCondition(AutomationElement.AutomationIdProperty, "MyTestView");
AutomationElement view = AutomationElement.RootElement.FindFirst(TreeScope.Children, viewCondition);
Assert.IsNotNull(view);
// Retrieve the CustomControl
System.Windows.Automation.Condition comboboxCondition = new PropertyCondition(AutomationElement.AutomationIdProperty, "MyCustomControl");
AutomationElement combobox = view.FindFirst(TreeScope.Children, comboboxCondition);
Assert.IsNotNull(comboboxCondition);
Теперь я хочу использовать, например, ValuePattern. И тут я путаюсь.
В поисках информации я искал исходный код WPF по адресу referencesource.microsoft.com. Я столкнулся с ComboboxAutomationPeer, который реализует IValueProvider, так что теперь я запутался.
Должен ли я также реализовать MyCustomControlAutomationPeer, который реализует IValueProvider, и будет ли тогда AutomationElement работать с ValuePattern? Или мне нужно, чтобы MyCustomControl реализовал IValueProvider?