Поделиться через


Свойства автоматизации пользовательского интерфейса для клиентов

ПримечаниеПримечание

Эта документация предназначена для разработчиков на платформе .NET Framework, которым требуется использовать управляемые классы UI Automation, определенные в пространстве имен System.Windows.Automation.Последние сведения о UI Automation см. на веб-странице Windows Automation API: UI Automation.

Этот обзор посвящен свойствам UI Automation, предоставляемых для клиента автоматизации пользовательского интерфейса приложений.

Свойства объектов AutomationElement содержат сведения об элементах user interface (UI), обычно об элементах управления. Свойства объектов AutomationElement универсальны, т. е. не являются особыми для того или иного типа элемента управления. Многие из этих свойств представляются в структуре AutomationElement.AutomationElementInformation.

Шаблоны элемента управления также обладают свойствами. Свойства шаблонов элементов управления являются специфичными для шаблона. Например, ScrollPattern имеет свойства, которые позволяют клиентскому приложению обнаружить, является ли окно горизонтально или вертикально прокручиваемым, и какие установлены размеры текущего представления и положения полос прокрутки. Шаблоны элемента управления предоставляют все свои свойства через структуру; например ScrollPattern.ScrollPatternInformation.

Свойства UI Automation доступны только для чтения. Чтобы задать свойства элемента управления, вам необходимо использовать методы соответствующего шаблона элемента управления. Например, использовать Scroll для изменения значений положения окна с полосами прокрутки.

Для повышения производительности, значения свойств и шаблонов элементов управления могут быть кэшированы при извлечении объектов AutomationElement. Дополнительные сведения см. в разделе Кэширование в клиентах автоматизации пользовательского интерфейса.

В этом разделе содержатся следующие подразделы.

  • Идентификаторы свойств
  • Состояния свойства
  • Извлекаемые свойства
  • Значения свойства по умолчанию
  • Измененные свойством события
  • Дополнительные свойства AutomationElement
  • Связанные разделы

Идентификаторы свойств

Свойство identifiers (IDs) является уникальным константным значением, инкапсулированным в объектах AutomationProperty. Клиент автоматизации пользовательского интерфейса приложения получают эти IDs из класса AutomationElement или соответствующего класса шаблона элемента управления, например ScrollPattern. Поставщики автоматизации пользовательского интерфейса получают их из класса AutomationElementIdentifiers или из одного из классов идентификаторов шаблонов элементов управления, например ScrollPatternIdentifiers.

Числовой Id из AutomationProperty используется поставщиками для идентификации свойств, которые запрашиваются в методе IRawElementProviderSimple.GetPropertyValue. В общем случае клиентским приложениям не требуется проверять Id. ProgrammaticName используется только для отладочных и диагностических целей.

Состояния свойства

Свойство IDs используются в построении объектов PropertyCondition, используемых для поиска объектов AutomationElement. Например, может потребоваться найти объект AutomationElement, имеющий определенное имя, или все доступные элементы управления. Каждый объект PropertyCondition указывает идентификатор AutomationProperty и значение, с которым свойство должно совпадать.

Дополнительные сведения см. в следующих разделах:

Извлекаемые свойства

Некоторые свойства AutomationElement и все свойства класса шаблона элемента управления представляются как вложенные свойства Current или свойства Cached из AutomationElement или объекта шаблона элемента управления.

Кроме того, любой AutomationElement или свойство шаблона элемента управления, включая свойство, которое не доступно в структуре Cached или Current, могут быть получены с помощью одного из следующих способов:

Эти методы предоставляют немного большую производительность, так же как и доступ к полному набору свойств.

В следующем примере показано два способа получения свойства в AutomationElement.

' elementList is an AutomationElement.
' The following two calls are equivalent.
Dim name As String = elementList.Current.Name
name = CStr(elementList.GetCurrentPropertyValue(AutomationElement.NameProperty))
// elementList is an AutomationElement.

// The following two calls are equivalent.
string name = elementList.Current.Name;
name = elementList.GetCurrentPropertyValue(AutomationElement.NameProperty) as string;

Чтобы извлечь свойства шаблонов элемента управления, поддерживаемых AutomationElement, вам необязательно извлекать объект шаблона элемента управления. Просто передайте один из идентификаторов свойства шаблона в метод.

В следующем примере показано два способа извлечения свойства в шаблоне элемента управления.

' elementList is an AutomationElement representing a list box.
' Error-checking is omitted. Assume that elementList is known to support SelectionPattern.
Dim selectPattern As SelectionPattern = _
    DirectCast(elementList.GetCurrentPattern(SelectionPattern.Pattern), SelectionPattern)
Dim isMultipleSelect As Boolean = selectPattern.Current.CanSelectMultiple

' The following call is equivalent to the one above.
isMultipleSelect = CBool(elementList.GetCurrentPropertyValue(SelectionPattern.CanSelectMultipleProperty))
// elementList is an AutomationElement representing a list box.
// Error-checking is omitted. Assume that elementList is known to support SelectionPattern.

SelectionPattern selectPattern =
    elementList.GetCurrentPattern(SelectionPattern.Pattern) as SelectionPattern;
bool isMultipleSelect = selectPattern.Current.CanSelectMultiple;

// The following call is equivalent to the one above.
isMultipleSelect = (bool)
    elementList.GetCurrentPropertyValue(SelectionPattern.CanSelectMultipleProperty);

Методы Get возвращают Object. Приложение должно привести возвращаемый объект к нужному типу до использования значения.

Значения свойства по умолчанию

Если поставщик автоматизации пользовательского интерфейса не реализовывает свойство, система UI Automation способна предоставить значение по умолчанию. Например, если поставщик элемента управления не поддерживает свойство, определяемое HelpTextProperty, UI Automation возвращает пустую строку. Аналогично, если поставщик не поддерживает свойство, определяемое IsDockPatternAvailableProperty, UI Automation возвращает false.

Такое поведение можно изменить с помощью перегрузок методов AutomationElement.GetCachedPropertyValue и AutomationElement.GetCurrentPropertyValue. При указании true в качестве второго параметра, UI Automation не возвращает значения по умолчанию, но вместо этого возвращает специальное значение NotSupported.

Приведенный ниже пример кода пытается извлечь свойство из элемента, и если свойство не поддерживается, то используется значение, определенное приложением.

' elementList is an AutomationElement.
Dim help As Object = elementList.GetCurrentPropertyValue(AutomationElement.HelpTextProperty, True)
If help Is AutomationElement.NotSupported Then
    help = "No help available"
End If
Dim helpText As String = CStr(help)
// elementList is an AutomationElement.
object help = elementList.GetCurrentPropertyValue(AutomationElement.HelpTextProperty, true);
if (help == AutomationElement.NotSupported)
{
    help = "No help available";
}
string helpText = (string)help;

Чтобы определить, какие свойства поддерживаются элементом, используйте GetSupportedProperties. Он возвращает массив идентификаторов AutomationProperty.

Измененные свойством события

При изменении значения свойства в AutomationElement, или в шаблоне элемента управления, вызывается событие изменения. Приложение может получать уведомления о таких событиях, вызвав AddAutomationPropertyChangedEventHandler, предоставив массив идентификаторов AutomationProperty в качестве последнего параметра, для указания нужных свойств.

В AutomationPropertyChangedEventHandler вы можете определить свойство, которое было изменено путем проверки члена Property аргументов события. Аргументы также содержат старые и новые значения свойств UI Automation, которые были изменены. Эти значения имеют тип Object и должны быть приведены к правильному типу перед использованием.

Дополнительные свойства AutomationElement

В дополнение к структурам свойстваCurrent и Cached, AutomationElement имеет следующие свойства, которые извлекаются через простые средства доступа к свойствам.

Свойство

Описание

CachedChildren

Коллекция дочерних AutomationElement объектов, находящихся в кэше.

CachedParent

Родительский объект AutomationElement, находящийся в кэше.

FocusedElement

(Статическое свойство) AutomationElement, который имеет фокус ввода.

RootElement

(Статическое свойство) Корневой AutomationElement.

См. также

Задачи

Подписка на события модели автоматизации пользовательского интерфейса

Основные понятия

Кэширование в клиентах автоматизации пользовательского интерфейса

Реализация поставщика автоматизации пользовательского интерфейса на стороне сервера