UI 自动化属性概述

备注

本文档适用于想要使用 System.Windows.Automation 命名空间中定义的托管 UI 自动化类的 .NET Framework 开发人员。 有关 UI 自动化的最新信息,请参阅 Windows 自动化 API:UI 自动化

UI 自动化提供程序公开 Microsoft UI 自动化元素的属性。 这些属性使 UI 自动化客户端应用程序能够发现有关用户界面 (UI) 各部分(特别是控件)的信息,包括静态数据和动态数据。

本部分是 Microsoft UI 自动化属性的一般概述。 下面各主题中提供了更具体的信息:

属性标识符

每个属性都由一个数字和名称标识。 属性的名称仅用于调试和诊断。 提供程序使用数字 ID 来标识传入的属性请求。 但是,客户端应用程序只使用封装了数字和名称的 AutomationProperty来标识它们希望检索的属性。

表示特定属性的AutomationProperty 对象在各个类中以字段的形式提供。 出于安全原因,UI 自动化提供程序将从 Uiautomationtypes.dll 中包含的一组单独的类中获取这些对象。

下表按包含 AutomationPropertyID 的类对属性进行分类。

属性的种类 客户端从中获取 ID 提供程序从中获取 ID
所有元素共有的属性(请参阅下表) AutomationElement AutomationElementIdentifiers
停靠窗口的位置 DockPattern DockPatternIdentifiers
可展开和折叠的元素的状态 ExpandCollapsePattern ExpandCollapsePatternIdentifiers
网格中某项的属性 GridItemPattern GridItemPatternIdentifiers
网格的属性 GridPattern GridPatternIdentifiers
具有多个视图的元素的当前和支持的视图 MultipleViewPattern MultipleViewPatternIdentifiers
在一定范围的值内移动的元素(如滑块)的属性 RangeValuePattern RangeValuePatternIdentifiers
滚动窗口的属性 ScrollPattern ScrollPatternIdentifiers
可选择的某项(如列表中的某项)的状态和容器 SelectionItemPattern SelectionItemPatternIdentifiers
包含选择项的控件的属性 SelectionPattern SelectionPatternIdentifiers
表中某项的列和行标题 TableItemPattern TableItemPatternIdentifiers
表的列和行标题以及方向 TablePattern TablePatternIdentifiers
切换控件的状态 TogglePattern TogglePatternIdentifiers
可移动、旋转、或调整大小的元素的功能 TransformPattern TransformPatternIdentifiers
具有值的元素的值和读/写功能 ValuePattern ValuePatternIdentifiers
窗口的功能和状态 WindowPattern WindowPatternIdentifiers

按类别排列的属性

下表对其 ID 位于 AutomationElementAutomationElementIdentifiers 中的属性进行分类。 这些属性是所有控件共有的。 很少一些属性在提供程序应用程序的生存期内可能是静态的;大多数动态属性都与控件模式关联。

之外, GetCurrentPropertyValueGetCachedPropertyValue“属性访问”列还列出了每个属性的任何其他访问器。 有关在客户端应用程序中获取属性的详细信息,请参阅 UI Automation Properties for Clients

备注

有关每个属性的具体信息,请访问 “属性访问”列中的链接。

显示特征

属性标识符
BoundingRectangleProperty BoundingRectangle
CultureProperty 不适用
HelpTextProperty HelpText
IsOffscreenProperty IsOffscreen
OrientationProperty Orientation

元素类型

属性标识符
ControlTypeProperty ControlType
IsContentElementProperty IsContentElement
IsControlElementProperty IsControlElement
ItemTypeProperty ItemType
LocalizedControlTypeProperty LocalizedControlType

标识

属性标识符
AutomationIdProperty AutomationId
ClassNameProperty ClassName
FrameworkIdProperty FrameworkId
LabeledByProperty LabeledBy
NameProperty Name
ProcessIdProperty ProcessId
RuntimeIdProperty GetRuntimeId
NativeWindowHandleProperty NativeWindowHandle

交互

属性标识符
AcceleratorKeyProperty AcceleratorKey
AccessKeyProperty AccessKey
ClickablePointProperty GetClickablePoint
HasKeyboardFocusProperty HasKeyboardFocus
IsEnabledProperty IsEnabled
IsKeyboardFocusableProperty IsKeyboardFocusable

对模式的支持

属性标识符
IsDockPatternAvailableProperty GetSupportedPatterns
IsExpandCollapsePatternAvailableProperty GetSupportedPatterns
IsGridItemPatternAvailableProperty GetSupportedPatterns
IsGridPatternAvailableProperty GetSupportedPatterns
IsInvokePatternAvailableProperty GetSupportedPatterns
IsMultipleViewPatternAvailableProperty GetSupportedPatterns
IsRangeValuePatternAvailableProperty GetSupportedPatterns
IsScrollItemPatternAvailableProperty GetSupportedPatterns
IsScrollPatternAvailableProperty GetSupportedPatterns
IsSelectionItemPatternAvailableProperty GetSupportedPatterns
IsSelectionPatternAvailableProperty GetSupportedPatterns
IsTableItemPatternAvailableProperty GetSupportedPatterns
IsTablePatternAvailableProperty GetSupportedPatterns
IsTextPatternAvailableProperty GetSupportedPatterns
IsTogglePatternAvailableProperty GetSupportedPatterns
IsTransformPatternAvailableProperty GetSupportedPatterns
IsValuePatternAvailableProperty GetSupportedPatterns
IsWindowPatternAvailableProperty GetSupportedPatterns

杂项

属性标识符
IsRequiredForFormProperty IsRequiredForForm
IsPasswordProperty IsPassword
ItemStatusProperty ItemStatus

本地化

UI 自动化提供程序应按照操作系统的语言呈现下列属性:

属性和事件

属性更改事件的概念与 UI 自动化中的属性密切相关。 对于动态属性,客户端应用程序需要一种途径来了解属性值已更改,以便它能够用某种其他方式更新信息缓存或对新信息做出响应。

当 UI 中的内容发生更改时,提供程序将引发事件。 例如,如果选中或清除了复选框,则提供程序的切换模式实现将引发属性更改事件。 提供程序可以有选择地引发事件,具体取决于任何客户端是在侦听事件还是在侦听特定事件。

并非所有属性更改都会引发事件;这完全由元素的 UI 自动化提供程序实现所决定。 例如,列表框的标准代理提供程序在 SelectionProperty 更改时不会引发事件。 相反,在这种情况下,应用程序必须侦听 ElementSelectedEvent

客户端通过订阅事件来侦听事件。 订阅事件是指创建可处理事件的委托方法,然后将方法随将在这些方法中处理的特定事件一起传递给 UI 自动化。 特别是对于属性更改事件,客户端必须实现 AutomationPropertyChangedEventHandler

请参阅