UI 自动化对 List 控件类型的支持

注意

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

本主题介绍有关 UI 自动化对 List 控件类型的支持的信息。 在 UI 自动化中,控件类型是一组条件,控件必须满足这些条件才能使用 ControlTypeProperty 属性。 这些条件包括针对 UI 自动化树结构、UI 自动化属性值和控件模式的特定准则。

List 控件类型提供一种方法来组织平面组或项组并允许用户选择一个或多个这些项。 List 控件类型对它可能包含哪些类型的子元素具有宽松的限制。 这使 UI 自动化提供程序可以支持选择容器中的已知元素。

以下部分中的 UI 自动化要求适用于所有实现 List 控件类型的控件,无论是 Windows Presentation Foundation (WPF)、Win32 还是 Windows 窗体。 List 容器控件是实现 List 控件类型的控件示例。

必需的 UI 自动化树结构

下表描述与列表控件有关的 UI 自动化树的两种视图,并说明每种视图中可包含的内容。 控件视图只包含作为控件的元素,而内容视图从树中删除冗余信息。 例如,用来标记组合框的文本控件将作为 ComboBox NameProperty公开。 因为文本控件已通过控件视图以这种方式公开,所以没有必要让它公开两次 ;因此将它从内容视图中删除。 有关 UI 自动化树的详细信息,请参阅 UI 自动化树概述

控件视图 内容视图
包含对应于控件的元素。 从树中删除冗余信息,以便辅助技术使用最小部分的对最终用户有意义的信息。
列出

- 数据项(0 个或多个)
- 列表项(0 个或多个)
- 组(0 个或多个)
- 滚动条(0、1 或 2 个)
列出

- 数据项(0 个或多个)
- 列表项(0 个或多个)
- 组(0 个或多个)

实现 List 控件类型(如列表控件)的控件的控件视图组成如下:

  • 列表控件中的零个或多个项(项可以基于 List Item 或 Data Item 控件类型)

  • 列表控件中的零个或多个组控件

  • 零个、一个或两个滚动条控件

实现 List 控件类型(如列表控件)的控件的内容视图组成如下:

  • 列表控件中的零个或多个项(项可以基于 List Item 或 Data Item 控件类型)

  • 列表控件中的零个或多个组

列表控件不得具有除了组合在一起外的层次结构关系。 如果这些项在 UI 自动化树中具有子项,则列表容器应基于 Tree 控件类型。

列表控件中可选择的项都可从列表控件的 UI 自动化树中的后代获取。 列表控件中的所有项都必须都属于同一个选择组。 在列表中的可选择项应作为 ListItem(而不是 DataItem)控件类型公开。

必需的 UI 自动化属性

下表列出了值或定义与列表控件特别相关的 UI 自动化属性。 有关 UI 自动化属性的详细信息,请参阅客户端的 UI 自动化属性

UI 自动化属性 说明
AutomationIdProperty 请参阅注释。 此属性的值在应用程序的所有控件中都必须保持唯一。
BoundingRectangleProperty 请参阅注释。 包含整个控件的最外层矩形。
ClickablePointProperty 请参阅注释。 如果列表控件具有可单击的点(可通过单击使列表获得焦点的点),则必须通过此属性公开该点。

如果 IsOffScreen 属性的值为 True,将引发 NoClickablePointException
IsKeyboardFocusableProperty 请参阅注释。 如果该控件可以接收键盘焦点,则它必须支持此属性。
NameProperty 请参阅注释。 列表控件的 Name 属性的值应传达用户需要从其中选择的选项类别。 此属性通常从静态文本标签获取其名称。 如果没有静态文本标签,则应用程序开发人员必须公开 Name 属性的值。

只有在另一个控件的子树内使用控件时,列表控件才不要求此属性。
LabeledByProperty 请参阅注释。 如果存在静态文本标签,则此属性必须公开对该控件的引用。
ControlTypeProperty 列出 此值对于所有 UI 框架均相同。
LocalizedControlTypeProperty “列表” 与 List 控件类型相对应的本地化字符串。
IsContentElementProperty 正确 列表控件始终包含在 UI 自动化树的内容视图中。
IsControlElementProperty 正确 列表控件始终包括在 UI 自动化树的控件视图中。
IsKeyboardFocusableProperty 正确 如果该容器可以接受键盘输入,则此属性的值应为 true。
HelpTextProperty 请参阅注释。 列表控件的帮助文本应解释为什么要求用户从选项列表中进行选择。 例如,“从此列表中选择项将会设置显示监视器的分辨率。”

必需的 UI 自动化控件模式和属性

下表列出需要列表控件支持的 UI 自动化控件模式。 有关控件模式的详细信息,请参阅 UI Automation Control Patterns Overview

控件模式/模式属性 支持/值 注释
ISelectionProvider 必须 当选定状态维持在控件中包含的项之间时,支持对 List 控件类型的所有控件必须实现 ISelectionProvider 。 如果容器内的项不可选,则必须使用 Group 控件类型。
IsSelectionRequired 依赖的对象 List 控件并不总是要求选择一个项。
CanSelectMultiple 依赖的对象 List 控件可以是单选或多选容器。
IScrollProvider 依赖的对象 如果容器中的项可滚动,则实现此控件模式。
IGridProvider 依赖的对象 当网格导航需要在项上以逐个项的方式可用,则实现此模式。
IMultipleViewProvider 依赖的对象 如果该控件可以支持容器中的项的多个视图,则实现此控件模式。
ITableProvider 从不 List 控件类型从不支持ITableProvider 。 如果控件应该支持此控件模式,该该控件应基于的数据网格控件类型。

必需的 UI 自动化事件

下表列出需要所有列表控件支持的 UI 自动化事件。 有关事件的详细信息,请参阅 F:System.Windows.Automation.AutomationElementIdentifiers.IsEnabledProperty

UI 自动化事件 支持/值 备注
InvalidatedEvent 依赖的对象
LayoutInvalidatedEvent 依赖的对象
BoundingRectangleProperty 属性更改事件。 必需
IsOffscreenProperty 属性更改事件。 必需
IsEnabledProperty 属性更改事件。 必需
CurrentViewProperty 属性更改事件。 依赖的对象
HorizontallyScrollableProperty 属性更改事件。 依赖的对象
HorizontalScrollPercentProperty 属性更改事件。 依赖的对象
HorizontalViewSizeProperty 属性更改事件。 依赖的对象
VerticalScrollPercentProperty 属性更改事件。 依赖的对象
VerticallyScrollableProperty 属性更改事件。 依赖的对象
VerticalViewSizeProperty 属性更改事件。 依赖的对象
AutomationFocusChangedEvent 必须
StructureChangedEvent 必须

请参阅