UI 自动化控件模式概述
注意 |
---|
本文档的目标读者是欲使用 System.Windows.Automation 命名空间中定义的托管 UI Automation类的 .NET Framework 开发人员。有关 UI Automation的最新信息,请参见 Windows Automation API: UI Automation(Windows 自动化 API:UI 自动化)。 |
本概述介绍 Microsoft UI Automation控件模式。 控件模式提供一种将控件功能加以分类和公开的方式,这种方式与控件类型或控件外观无关。
UI Automation使用控件模式表示常见控件行为。 例如,对可以调用的控件(如按钮)使用 Invoke 控件模式,对具有滚动条的控件(如列表框、列表视图或组合框)使用 Scroll 控件模式。 由于每种控件模式都代表不同的功能,因此可以将它们组合在一起描述特定控件支持的完整功能集。
注意 |
---|
聚合控件(采用为父项公开的功能提供user interface (UI) 的子控件构建)应实现通常与每个子控件关联的所有控件模式。而子控件不需要实现这些相同的控件模式。 |
本主题包括下列各节。
- UI 自动化控件模式组件
- UI 自动化提供程序和客户端
- 动态控件模式
- 控件模式类和接口
- 相关主题
UI 自动化控件模式组件
控件模式支持定义控件中可用的一项独立功能所需的方法、属性、事件和关系。
UI 自动化元素与其父元素、子元素以及同级元素之间的关系描述了 UI Automation树内元素的结构。
UI 自动化客户端使用方法可以操作控件。
属性和事件提供了有关控件模式功能的信息以及有关控件状态的信息。
正如界面与 Component Object Model (COM) 对象相关一样,控件模式与 UI 相关。 在 COM 中,您可以通过查询某个对象来询问它支持哪些界面,然后使用这些界面访问功能。 在 UI Automation中,UI 自动化客户端可以询问控件它支持哪些控件模式,然后通过支持的控件模式所公开的属性、方法、事件和结构与该控件进行交互。 例如,对于多行编辑框,UI 自动化提供程序可实现 IScrollProvider。 客户端了解到 AutomationElement 支持 ScrollPattern 控件模式后,就可以使用该控件模式公开的属性、方法和事件来操作控件,还可以访问有关控件的信息。
UI 自动化提供程序和客户端
UI 自动化提供程序实现控件模式以便为控件支持的某项特定功能公开适当的行为。
UI 自动化客户端访问 UI Automation控件模式类的方法和属性,并使用这些方法和属性获取有关 UI 的信息或操作 UI。 这些控件模式类可以在 System.Windows.Automation 命名空间(例如,InvokePattern 和 SelectionPattern)中找到。
客户端使用 AutomationElement 方法(如 AutomationElement.GetCurrentPropertyValue 或 AutomationElement.GetCachedPropertyValue)或common language runtime (CLR) 访问器访问模式上的 UI Automation属性。 每个控件模式类都有一个字段成员(例如 InvokePattern.Pattern 或 SelectionPattern.Pattern),此字段成员标识该控件模式,并可以作为参数传递到 GetCachedPattern 或 GetCurrentPattern,以便为 AutomationElement 检索该模式。
动态控件模式
某些控件并不总是支持同一组控件模式。 如果控件模式可供 UI 自动化客户端使用,则认为控件支持这些控件模式。 例如,只有当多行编辑框包含的文本行多于可在其可视区域中显示的文本行时,它才会启用垂直滚动。 在移除足够多的文本而不再需要滚动后,将会禁用滚动。 对于此示例,系统将会根据控件的当前状态(编辑框中的文本量)动态地支持 ScrollPattern 控件模式。
控件模式类和接口
下表描述 UI Automation控件模式。 此表还列出了 UI 自动化客户端访问控件模式时所使用的类以及 UI 自动化提供程序实现这些类时所使用的接口。
控件模式类 |
提供程序接口 |
说明 |
---|---|---|
用于可在停靠容器中停靠的控件。 例如,工具栏或工具调板。 |
||
用于可以展开或折叠的控件。 例如,应用程序中的菜单项,如“文件”菜单。 |
||
用于支持网格功能(如调整指定单元格的大小或移动到指定单元格)的控件。 例如,Windows 资源管理器中的大图标视图或者 Microsoft Word 中无标题的简单表格。 |
||
用于具有网格中的单元格的控件。 各个单元格应该支持 GridItem 模式。 例如,Microsoft Windows Explorer 详细信息视图中的每个单元格。 |
||
用于可被调用的控件,如按钮。 |
||
用于可在同一组信息、数据或子项的多个表示形式之间进行切换的控件。 例如,在缩略图、平铺、图标、列表或详细信息视图中具有可用数据的列表视图控件。 |
||
用于具有一系列可应用于控件的值的控件。 例如,包含年份的微调框控件的数据范围可能介于 1900 至 2010 之间,而另一个呈现月份的微调框控件的数据范围可能介于 1 至 12 之间。 |
||
用于可滚动的控件。 例如,具有滚动条(信息太多而无法在控件可视区域中全部显示出来时会出现滚动条)的控件。 |
||
用于在可滚动的列表中包含多个独立项的控件。 例如,在滚动列表(如组合框控件)中包含多个独立项的列表控件。 |
||
用于选择容器控件。 例如,列表框和组合框。 |
||
用于选择容器控件(如列表框和组合框)中的各个项。 |
||
用于具有网格以及标题信息的控件。 例如,Microsoft Excel 工作表。 |
||
用于表中的项。 |
||
用于公开文本信息的编辑控件和文档。 |
||
用于可切换状态的控件。 例如,复选框以及可选中的菜单项。 |
||
用于可调整大小、移动和旋转的控件。 Transform 控件模式通常用于设计器、窗体、图形编辑器和绘图应用程序。 |
||
允许客户端在不支持一系列值的控件上获取或设置某个值。 例如,日期时间选择器。 |
||
向 Microsoft Windows 操作系统公开特定于窗口的信息(一种基本概念)。 用作窗口的控件示例包括顶级应用程序窗口(Microsoft Word、Microsoft Windows Explorer 等等)、multiple-document interface (MDI) 子窗口和对话框。 |