Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Эта документация предназначена для разработчиков .NET Framework, которые хотят использовать управляемые классы автоматизации пользовательского интерфейса, определенные в пространстве имен System.Windows.Automation. Последние сведения об автоматизации пользовательского интерфейса см. в разделе API автоматизации Windows: автоматизация пользовательского интерфейса.
В этом обзоре описаны свойства автоматизации пользовательского интерфейса, предоставляемые клиентским приложениям службы автоматизации пользовательского интерфейса.
Свойства объектов AutomationElement содержат сведения о элементах пользовательского интерфейса , как правило, элементах управления. Свойства AutomationElement являются обобщенными, т. е. не привязаны к конкретному типу элемента управления. Многие из этих свойств представлены в структуре AutomationElement.AutomationElementInformation.
Шаблоны элементов управления также имеют свойства. Свойства шаблонов элементов управления зависят от шаблона. Например, имеет свойства, ScrollPattern позволяющие клиентскому приложению обнаруживать, является ли окно вертикально или горизонтально прокручиваемым, а также размеры текущего представления и позиции прокрутки. Шаблоны элементов управления предоставляют все их свойства через структуру; например, ScrollPattern.ScrollPatternInformation.
Свойства автоматизации пользовательского интерфейса доступны только для чтения. Чтобы задать свойства элемента управления, необходимо использовать методы соответствующего шаблона элемента управления. Например, используйте Scroll для изменения значений позиции окна прокрутки.
Чтобы повысить производительность, значения свойств элементов управления и шаблонов элементов управления можно кэшировать при AutomationElement извлечении объектов. Дополнительные сведения см. в разделе "Кэширование" в клиентах автоматизации пользовательского интерфейса.
Идентификаторы свойств
Идентификаторы свойств являются уникальными, константными значениями, инкапсулированными в AutomationProperty объектах. Клиентские приложения автоматизации пользовательского интерфейса получают эти идентификаторы из AutomationElement класса или из соответствующего класса шаблона элемента управления, например ScrollPattern. Поставщики автоматизации пользовательского интерфейса получают их из AutomationElementIdentifiers или из одного из классов идентификаторов шаблонов элементов управления, таких как ScrollPatternIdentifiers.
Числовое значение IdAutomationProperty используется поставщиками для идентификации свойств, которые запрашиваются в методе IRawElementProviderSimple.GetPropertyValue. Как правило, клиентские приложения не должны проверять Id. Используется ProgrammaticName только для отладки и диагностики.
Условия использования недвижимости
Идентификаторы свойств используются в создании PropertyCondition объектов, используемых для поиска AutomationElement объектов. Например, вам может потребоваться найти AutomationElement по определенному имени или все включенные элементы управления. Каждый PropertyCondition указывает AutomationProperty идентификатор и значение, которое должно соответствовать свойству.
Дополнительные сведения см. в следующих справочных разделах:
Получение свойств
Некоторые свойства AutomationElement и все свойства класса шаблона элемента управления предоставляются как вложенные свойства Current
или Cached
свойства объекта AutomationElement или объекта шаблона элемента управления.
Кроме того, любое AutomationElement или управляемое свойство шаблона, включая свойство, недоступное в Cached или Current структуре, можно получить с помощью одного из следующих методов:
Эти методы обеспечивают немного лучшую производительность, а также доступ к полному диапазону свойств.
В следующем примере кода показаны два способа получения свойства в объекте AutomationElement.
// elementList is an AutomationElement.
// The following two calls are equivalent.
string name = elementList.Current.Name;
name = elementList.GetCurrentPropertyValue(AutomationElement.NameProperty) as string;
' elementList is an AutomationElement.
' The following two calls are equivalent.
Dim name As String = elementList.Current.Name
name = CStr(elementList.GetCurrentPropertyValue(AutomationElement.NameProperty))
Чтобы получить свойства шаблонов элементов управления, поддерживаемых этим элементом AutomationElement, не требуется извлекать объект шаблона элемента управления. Просто передайте один из идентификаторов свойства шаблона методу.
В следующем примере кода показаны два способа получения свойства в шаблоне элемента управления.
// 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);
' 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))
Методы Get
возвращают Object значение. Приложение должно привести возвращаемый объект к соответствующему типу перед использованием значения.
Значения свойств по умолчанию
Если поставщик автоматизации пользовательского интерфейса не реализует свойство, система автоматизации пользовательского интерфейса может предоставить значение по умолчанию. Например, если поставщик элемента управления не поддерживает свойство, определяемое HelpTextProperty, автоматизация пользовательского интерфейса возвращает пустую строку. Аналогичным образом, если поставщик не поддерживает свойство, указанное в IsDockPatternAvailableProperty, система автоматизации UI возвращает false
.
Это поведение можно изменить с помощью перегрузок методов AutomationElement.GetCachedPropertyValue и AutomationElement.GetCurrentPropertyValue. При указании true
в качестве второго параметра автоматизация пользовательского интерфейса не возвращает значение по умолчанию, а возвращает специальное значение NotSupported.
В следующем примере кода выполняется попытка получить свойство из элемента, а если свойство не поддерживается, вместо этого используется определенное приложением значение.
// elementList is an AutomationElement.
object help = elementList.GetCurrentPropertyValue(AutomationElement.HelpTextProperty, true);
if (help == AutomationElement.NotSupported)
{
help = "No help available";
}
string helpText = (string)help;
' 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)
Чтобы узнать, какие свойства поддерживаются элементом, используйте GetSupportedProperties. Возвращает массив идентификаторов AutomationProperty .
События изменения свойств
При изменении значения свойства в AutomationElement или шаблоне элемента управления создается событие. Приложение может подписаться на такие события, вызвав AddAutomationPropertyChangedEventHandler, передав массив идентификаторов AutomationProperty в качестве последнего параметра, чтобы указать интересующие свойства.
В AutomationPropertyChangedEventHandler можно определить свойство, которое изменилось, проверив Property член аргументов события. Аргументы также содержат старые и новые значения свойства автоматизации пользовательского интерфейса, которое изменилось. Эти значения имеют тип Object и должны быть приведены к правильному типу перед использованием.
Дополнительные свойства AutomationElement
Помимо структур свойств Current и Cached, AutomationElement обладает следующими свойствами, которые извлекаются с помощью простых аксессоров свойств.
Недвижимость | Описание |
---|---|
CachedChildren | Коллекция дочерних AutomationElement объектов, которые находятся в кэше. |
CachedParent | Родительский AutomationElement объект, который находится в кэше. |
FocusedElement | (Статическое свойство) Элемент AutomationElement, который в данный момент имеет фокус ввода. |
RootElement | (Статическое свойство) Корень AutomationElement. |