Как я могу получить значение моего WPF UserControl DependencyProperty из UI Automation Framework? - PullRequest
2 голосов
/ 09 марта 2010

У меня проблемы с получением доступа к моим значениям WPF UserControl DependencyProperty через UI Automation Framework.

Я использовал статью Джеймса МакКаффриса в MSDN в качестве отправной точки (Автоматизация тестов ввода-вывода в приложениях WPF, MSDN, март 2009 г.), но я вижу свойства и т. Д. Только в стандартных элементах управления, таких как кнопки.

Я предполагаю, что есть некоторый интерфейс автоматизации, который я должен реализовать на своем UserControl, но что и как?

Я уже вижу свой контроль, например, в UISpy, но я не вижу свойства зависимости внутри него. Вот как выглядит мой usercontrol в UISpy:

AutomationElement Общая доступность AccessKey: "" AcceleratorKey: "" IsKeyboardFocusable: "False" LabeledBy: "(null)" HelpText: "Включает / выключает фантомное питание 48 В (только для микрофонных входов)."

State IsEnabled: "True" HasKeyboardFocus: "False"

Идентификация ClassName: "" ControlType: "ControlType.Custom" Culture: "(null)" AutomationId: "V48SwL" LocalizedControlType: "custom" Имя: "" ProcessId: "5684 (VirtualSix)" RuntimeId: "7 5684 40026340 IsPassword: «False» IsControlElement: «True» IsContentElement: «True»

Видимость BoundingRectangle: "(140, 457, 31, 20)" ClickablePoint: "155,467" IsOffscreen: "False"

ControlPatterns

1 Ответ

2 голосов
/ 12 марта 2010

Нет способа получить произвольные значения свойств зависимости от UI Automation: вы можете получить только AutomationProperty значения.

В этом сообщении на форуме говорится, что в новой версии API UIAutomation есть способ добавления собственных настраиваемых свойств AutomationProperties, но эта версия UIA пока не поддерживается WPF.

Предлагаемый обходной путь - привязать интересующее вас свойство зависимости к присоединенному свойству AutomationProperties.ItemStatus: тогда оно будет доступно в AutomationElement.Current.ItemStatus.

...