UI 自动化控件模式概述

控件模式是一种接口实现,它向 Microsoft UI 自动化客户端应用程序公开控件功能的特定方面。 客户端使用通过控件模式公开的属性和方法检索有关控件的特定功能的信息,或操作控件行为的特定方面。 例如,显示表格接口的控件使用 Grid 控件模式公开表中的行数和列数,并使客户端能够从表中检索项。

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

注意

聚合控件是使用子控件生成的,子控件为父控件公开的功能提供用户界面,父控件应实现通常与其子控件关联的所有控件模式。 反过来,不需要由这些子控件实现相同的这些控件模式。

 

本主题包含以下各节:

UI 自动化控件模式组件

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

  • 这些方法允许 UI 自动化客户端操作控件。
  • 属性和事件提供有关控件的功能和状态的信息。
  • UI 自动化 元素与其父元素、子元素和同级元素之间的关系描述了UI 自动化树中的元素结构。

控件模式与控件相关的方式与接口与组件对象模型 (COM) 对象相关的方式类似。 在 COM 中,可以查询对象以询问它支持哪些接口,然后使用这些接口访问功能。 在UI 自动化中,客户端可以询问控件支持哪些控件模式,然后通过受支持控件模式公开的属性、方法、事件和结构与控件交互。

提供程序和客户端中的控件模式

UI 自动化提供程序实现控件模式接口,以公开控件支持的特定功能片段的相应行为。 这些接口不直接公开给客户端,但由UI 自动化核心用来实现另一组客户端接口。 例如,提供程序通过 IScrollProvider 向UI 自动化公开滚动功能,UI 自动化通过 IUIAutomationScrollPattern 向客户端公开该功能。

动态控件模式

某些控件并不总是支持同一组控件模式。 例如,多行编辑控件仅当它包含的文本行多于其可查看区域中显示的数量时,才启用垂直滚动。 当删除了足够多的文本以便不再需要滚动时,滚动才被禁用。 在此示例中, 动态支持 IUIAutomationScrollPattern ,具体取决于编辑框中的文本量。

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

名称 提供程序接口 客户端接口 说明
批注 IAnnotationProvider IUIAutomationAnnotationPattern 用于公开文档中批注的属性,例如,与文档文本连接的边距中的批注。
靠接 IDockProvider IUIAutomationDockPattern 用于可停靠在停靠容器中的控件,例如工具栏或工具面板。
Drag IDragProvider IUIAutomationDragPattern 用于支持可拖动控件或包含可拖动项目的控件。
DropTarget IDropTargetProvider IUIAutomationDropTargetPattern 用于支持可作为拖放操作目标的控件。
ExpandCollapse IExpandCollapseProvider IUIAutomationExpandCollapsePattern 用于可展开或折叠的控件,例如应用程序中的菜单项,如“文件”菜单。
网格 IGridProvider IUIAutomationGridPattern 用于支持网格功能的控件,例如调整大小和移动到指定单元格,例如 Windows 资源管理器中的大图标视图或 Microsoft Office Word中的简单表。
GridItem IGridItemProvider IUIAutomationGridItemPattern 用于在网格中具有单元格的控件。 各个单元格应支持 GridItem 模式,例如,Windows 资源管理器详细信息视图中的每个单元格。
Invoke IInvokeProvider IUIAutomationInvokePattern 用于可调用的控件,例如按钮。
ItemContainer IItemContainerProvider IUIAutomationItemContainerPattern 用于可包含其他项的控件。
LegacyIAccessible ILegacyIAccessibleProvider IUIAutomationLegacyIAccessiblePattern 用于向UI 自动化客户端公开 Microsoft Active Accessibility 属性和方法。
MultipleView IMultipleViewProvider IUIAutomationMultipleViewPattern 用于可在同一组信息、数据或子项的多个表示形式之间切换的控件,例如,在缩略图、磁贴、图标、列表或详细信息视图中提供数据的列表视图控件。
ObjectModel IObjectModelProvider IUIAutomationObjectModelPattern 用于公开指向文档基础对象模型的指针。 此控件模式允许客户端从 UI 自动化 元素导航到基础对象模型。
RangeValue IRangeValueProvider IUIAutomationRangeValuePattern 用于具有值范围的控件。 例如,显示年份的微调器控件的范围为 1900- 2010,而显示月份的微调器控件的范围为 1- 12。
滚动 IScrollProvider IUIAutomationScrollPattern 用于当信息超出控件的可查看区域中显示的信息时可以滚动的控件。
ScrollItem IScrollItemProvider IUIAutomationScrollItemPattern 用于在列表中具有滚动的单个项的控件,例如组合框控件中的列表控件。
选择 ISelectionProvider IUIAutomationSelectionPattern 用于选择容器控件,例如列表框和组合框。
SelectionItem ISelectionItemProvider IUIAutomationSelectionItemPattern 用于选择容器控件中的各个项,如列表框和组合框。
电子表格 ISpreadsheetProvider IUIAutomationSpreadsheetPattern 用于公开电子表格或其他基于网格的文档的内容。 实现电子表格控件模式的控件还应实现网格控件模式。
SpreadsheetItem ISpreadsheetItemProvider IUIAutomationSpreadsheetItemPattern 用于公开电子表格或其他基于网格的文档的单元格属性。 实现 SpreadsheetItem 控件模式的控件还应实现 GridItem 控件模式。
样式 IStylesProvider IUIAutomationStylesPattern 用于描述具有特定样式、填充颜色、填充图案或形状的 UI 元素。
SynchronizedInput ISynchronizedInputProvider IUIAutomationSynchronizedInputPattern 用于接受键盘或鼠标输入的控件。
ITableProvider IUIAutomationTablePattern 用于具有网格和标头信息的控件。
TableItem ITableItemProvider IUIAutomationTableItemPattern 用于表中的项。
Text ITextProvider IUIAutomationTextPattern 用于可公开文本信息的编辑控件和文档。
TextEdit ITextEditProvider IUIAutomationTextEditPattern 用于编辑以编程方式修改文本的控件,例如执行自动更正或启用输入组合的控件。
TextChild ITextChildProvider IUIAutomationTextChildPattern 用于访问距元素最近的支持 Text 控件模式的上级元素。
TextRange ITextRangeProvider IUIAutomationTextRange 用于从基于文本的控件(如编辑控件和文档)检索文本内容、文本属性和嵌入对象。
切换 IToggleProvider IUIAutomationTogglePattern 用于可切换状态的控件,例如,检查框和可选中的菜单项。
转换 ITransformProvider IUIAutomationTransformPattern 用于可调整大小、移动和旋转的控件。 Transform 控件模式通常用于设计器、窗体、图形编辑器和绘图应用程序。
IValueProvider IUIAutomationValuePattern 用于具有不位于指定范围内的值的控件,例如日期时间选取器。
VirtualizedItem IVirtualizedItemProvider IUIAutomationVirtualizedItemPattern 用于处理虚拟列表中的项的控件。
窗口 IWindowProvider IUIAutomationWindowPattern 用于窗口。 示例包括顶级应用程序窗口、多文档界面 (MDI) 子窗口和对话框。

 

概念性

实现UI 自动化控件模式

UI 自动化客户端的控件模式映射