Есть ли способ установить AutomationID объекта без использования XAML?

Мне нужно автоматизировать приложение Winform. Как установить AutomationID (или AutomationName) как XAML в эта статья делает?

Из этой статьи о переполнении стека ответ кажется быть нет, если только я не переключу приложение на приложение WPF (чтобы я мог использовать XAML для определения элементов управления).

Я пробовал этот наивный подход:

  AutomationElement formAutomation = AutomationElement.FromHandle(this.Handle);
  formAutomation.Current.Name = "SandboxResponseDialogName";
  formAutomation.Current.ClassName = "SandboxResponseDialogClassName";
  formAutomation.Current.AutomationId = "SandboxResponseDialogID;

Но на данный момент в конструкторе элемента управления эти свойства автоматизации имеют только геттеры; нет сеттеров.


person John Washburn    schedule 31.01.2013    source источник


Ответы (1)


Если вы хотите установить что-либо в отношении UI Automation в коде, вам нужно использовать это:

using System.Windows.Automation;

И в вашем коде:

YourObjectClass element = // just get your element.
element.SetValue(AutomationProperties.AutomationIdProperty, "elementAutomationID");

Вы также можете использовать AutomationProperties.NameProperty для имени UIAutomation. AutomationProperties содержит все свойства для элементов UIAutomation (сеттер и геттер), как следует из названия.

person Mualig    schedule 25.06.2013
comment
Обратите внимание, что в этом примере element — это не элемент автоматизации пользовательского интерфейса (AutomationElement), а элемент управления WPF (например, CheckBox). - person Ohad Schneider; 20.12.2015