UI 自动化控件模式概述

注释

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

本概述介绍MICROSOFT UI 自动化控件模式。 控件模式提供了一种对控件的功能进行分类和公开的方法,与控件类型或控件的外观无关。

UI 自动化使用控件模式来表示常见的控件行为。 例如,对于可调用的控件(如按钮),使用“调用”控件模式;对于具有滚动条的控件(如列表框、列表视图或组合框),使用“滚动”控件模式。 由于每个控件模式都表示单独的功能,因此可以组合它们来描述特定控件支持的完整功能集。

注释

聚合控件(由子控件生成,这些子控件提供由父级公开的功能的用户界面 (UI))应实现所有与每个子控件正常关联的控件模式。 反过来,不需要由这些子控件实现相同的这些控件模式。

UI 自动化控件模式组件

控件模式支持定义控件中可用的离散功能所需的方法、属性、事件和关系。

  • UI 自动化元素与其父级、子级和同级之间的关系描述了 UI 自动化树中的元素结构。

  • 这些方法允许 UI 自动化客户端操作控件。

  • 属性和事件提供有关控件模式的功能以及有关控件状态的信息。

控件模式与 UI 相关,因为接口与组件对象模型 (COM) 对象相关。 在 COM 中,可以查询对象以询问它支持哪些接口,然后使用这些接口访问功能。 在 UI 自动化中,UI 自动化客户端可以询问它支持的控件模式,然后通过受支持控件模式公开的属性、方法、事件和结构与控件进行交互。 例如,对于多行编辑框,UI 自动化提供程序实现 IScrollProvider。 当客户端知道 AutomationElement 支持 ScrollPattern 控件模式时,客户端可以使用该控件模式提供的属性、方法和事件来操作控件或访问有关控件的信息。

UI 自动化提供程序和客户端

UI 自动化提供程序实现控件模式,以公开控件支持的特定功能段的适当行为。

UI 自动化客户端访问 UI 自动化控件模式类的方法和属性,并利用它们获取有关 UI 的信息,或操作 UI。 这些控件模式类位于命名空间中 System.Windows.Automation (例如 InvokePattern ,和 SelectionPattern)。

客户端使用 AutomationElement 方法(如 AutomationElement.GetCurrentPropertyValueAutomationElement.GetCachedPropertyValue)或公共语言运行时(CLR)访问器来访问模式上的 UI 自动化属性。 每个控件模式类都有一个字段成员(例如,InvokePattern.PatternSelectionPattern.Pattern),用于标识该控件模式,并且可以作为参数传递给 GetCachedPatternGetCurrentPattern,以检索 AutomationElement 的模式。

动态控制模式

某些控件并不总是支持同一组控件模式。 当控件模式可供 UI 自动化客户端使用时,它们被视为受支持。 例如,只有当多行编辑框中包含的文本行多于其可查看区域时,才会启用垂直滚动。 删除足够的文本时,将禁用滚动,以便不再需要滚动。 对于此示例,根据控件的当前状态(编辑框中的文本量)动态支持 ScrollPattern 控件模式。

控制模式类和接口

下表介绍了 UI 自动化控件模式。 该表还列出了 UI 自动化客户端用于访问控件模式的类,以及 UI 自动化提供程序用来实现它们的接口。

控件模式类 供应商接口 DESCRIPTION
DockPattern IDockProvider 用于可停靠在停靠容器中的控件。 例如,工具栏或工具面板。
ExpandCollapsePattern IExpandCollapseProvider 用于可展开或折叠的控件。 例如,应用程序中的菜单项,例如 “文件 ”菜单。
GridPattern IGridProvider 用于支持网格功能的控件,例如调整大小并移动到指定的单元格。 例如 Windows 资源管理器中的大图标视图或 Microsoft Word 中的不带标头的简单表格。
GridItemPattern IGridItemProvider 用于在网格中具有单元格的控件。 各个单元格应支持 GridItem 模式。 例如 Microsoft Windows 资源管理器详细信息视图中的每个单元格。
InvokePattern IInvokeProvider 用于可调用的控件,例如按钮。
MultipleViewPattern IMultipleViewProvider 用于能够在同一组信息、数据或子元素的多种展现方式之间进行切换的控件。 例如,列表视图控件,其中数据在缩略图、磁贴、图标、列表或详细信息视图中可用。
RangeValuePattern IRangeValueProvider 用于具有可应用于控件的值范围的控件。 例如,包含年份的微调器控件的范围为 1900 到 2010,而呈现月份的另一个微调器控件的范围为 1 到 12。
ScrollPattern IScrollProvider 用于可滚动的控件。 例如,当控件的可查看区域中显示的信息超过可显示范围时,控件的滚动条会处于活动状态。
ScrollItemPattern IScrollItemProvider 用于控件中包含可以滚动的各个列表项。 例如,包含在滚动列表中的单个项的列表控件,如组合框控件。
SelectionPattern ISelectionProvider 用于选择容器控件。 例如,列表框和组合框。
SelectionItemPattern ISelectionItemProvider 用于选择容器控件中的单个项,例如列表框和组合框。
TablePattern ITableProvider 用于包含网格和标头信息的控件。 例如,Microsoft Excel 工作表。
TableItemPattern ITableItemProvider 用于表格中的项目。
TextPattern ITextProvider 用于编辑公开文本信息的控件和文档。
TogglePattern IToggleProvider 用于可切换状态的控件。 例如,复选框和可选菜单项。
TransformPattern ITransformProvider 用于可调整大小、移动和旋转的控件。 转换控件模式的典型用途在设计器、窗体、图形编辑器和绘图应用程序中。
ValuePattern IValueProvider 允许客户端获取或设置那些不支持多个值范围的控件的值。 例如,日期时间选择器。
WindowPattern IWindowProvider 揭示特定于 Windows 的信息,这是 Microsoft Windows 操作系统的一个基本概念。 窗口的控件示例包括顶级应用程序窗口(Microsoft Word、Microsoft Windows 资源管理器等)、多文档界面(MDI)子窗口和对话框。

另请参阅