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

注意注意

本文档的目标读者是欲使用 System.Windows.Automation 命名空间中定义的托管 UI Automation类的 .NET Framework 开发人员。有关 UI Automation的最新信息,请参见 Windows Automation API: UI Automation(Windows 自动化 API:UI 自动化)。

本主题介绍 Microsoft UI Automation对 DataItem 控件类型的支持。 在 UI Automation中,控件类型是一组条件,控件为了使用 ControlTypeProperty 属性必须满足这组条件。 这些条件包括 UI Automation树结构的特定准则、UI Automation属性值和控件模式。

联系人列表中的条目就是数据项控件的示例。 数据项控件包含最终用户感兴趣的信息。 因为它包含丰富的信息,所以它比简单列表项复杂得多。

以下几节定义了 DataItem 控件类型必需的 UI Automation树结构、属性、控件模式和事件。 UI Automation的要求适用于所有数据项控件,无论控件是 Windows Presentation Foundation (WPF)、Win32 还是 Windows Forms。

本主题包括下列各节。

  • 必需的 UI 自动化树结构
  • 必需的 UI 自动化属性
  • 必需的 UI 自动化控件模式
  • 处理大列表中的数据项
  • 必需的 UI 自动化事件
  • DataItem 控件类型示例
  • 相关主题

必需的 UI 自动化树结构

下表描述了与数据项控件有关的 UI Automation树的控件视图和内容视图,以及每个视图中可包含的内容。 有关 UI Automation树的更多信息,请参见 UI 自动化树概述

UI Automation树 - 控件视图

UI Automation树 - 内容视图

DataItem

  • 可变(0 个或多个;可采用层次结构的形式构成)

DataItem

  • 可变(0 个或多个;可采用层次结构的形式构成)

数据网格中的数据项元素可以承载各种对象,包括其他数据项层或特定的网格元素(如文本、图像或编辑控件)。 如果数据项元素具有特定的对象角色,则应将该元素公开为特定的控件类型;例如,网格中的可选数据项的 ListItem 控件类型。

必需的 UI 自动化属性

下表列出了值或定义与数据项控件密切相关的属性。 有关 UI Automation 属性的更多信息,请参见 客户端的 UI 自动化属性

Property

注释

AutomationIdProperty

请参见“说明”。

此属性的值在应用程序的所有控件中都必须保持唯一。

BoundingRectangleProperty

请参见“说明”。

包含整个控件的最外面的矩形。

ClickablePointProperty

请参见“说明”。

有边框时支持。 如果边框中并非每个点都是可单击的,那么,在执行专用的命中测试时,请重写并提供一个可单击的点。

ControlTypeProperty

DataItem

此值对于所有的 UI 框架均相同。

IsContentElementProperty

True

数据项控件必须总是为内容。

IsControlElementProperty

True

数据项控件必须总是为控件。

IsKeyboardFocusableProperty

请参见“说明”。

如果该控件可以接收键盘焦点,则它必须支持此属性。

ItemStatusProperty

请参见“说明”。

如果控件包含可进行动态更新的主题,则必须支持该属性,以便辅助技术可以在元素的状态发生变化时接收更新。

ItemTypeProperty

请参见“说明”。

这个字符串值向最终用户传达该项所表示的基础对象。 “Media File”或“Contact”就是这样的值。

LabeledByProperty

Null

数据项控件没有静态文本标签。

LocalizedControlTypeProperty

“数据项”

与 DataItem 控件类型相对应的本地化字符串。

NameProperty

请参见“说明”。

数据项控件始终包含一个关于某个内容的主要文本元素,用户希望将该内容作为最能表示该项语义的标识符来关联。

必需的 UI 自动化控件模式

下表列出了必须由所有数据项控件支持的 Microsoft UI Automation控件模式。 有关控件模式的更多信息,请参见 UI 自动化控件模式概述

控件模式

支持

注释

IExpandCollapseProvider

视情况而定

如果可以通过展开或折叠数据项来显示和隐藏信息,则必须支持 Expand Collapse 模式。

IGridItemProvider

视情况而定

当数据项集合位于可在空间上逐项导航的容器中时,该数据项将支持 Grid Item 模式。

IScrollItemProvider

视情况而定

所有的数据项都支持如下功能:当屏幕上容纳不下数据容器中的项时,数据容器中的数据项将滚入具有 Scroll Item 模式的视图。

ISelectionItemProvider

所有的数据项都必须支持 Selection Item 模式以指示该项是在何时选择的。

ITableItemProvider

视情况而定

如果数据项包含在 Data Grid 控件类型中,则它将支持此模式。

IToggleProvider

视情况而定

如果数据项包含一个状态,则可以对它进行遍历。

IValueProvider

视情况而定

如果数据项的主要文本是可编辑的,则必须支持 Value 模式。

处理大列表中的数据项

大列表通常是指在 UI 框架中进行虚拟化以帮助提高性能的数据。 因此,UI 自动化客户端不能使用 UI Automation查询功能,按照与其他项容器中相同的方式来擦除整个树中的内容。 在访问数据项的完整信息之前,客户端应当将该项滚入相应的视图中(或展开控件以显示所有有用选项)。

在针对数据项的 UI Automation元素调用 SetFocus 时,Microsoft Windows Explorer case 将成功返回,并导致将焦点设置在数据项子树中的 Edit 上。

必需的 UI 自动化事件

下表列出了必须由所有数据项控件支持的 UI Automation事件。 有关事件的更多信息,请参见 UI 自动化事件概述

UI Automation事件

支持

注释

AutomationFocusChangedEvent

必需

BoundingRectangleProperty property-changed 事件。

必需

IsEnabledProperty property-changed 事件。

必需

IsOffscreenProperty property-changed 事件。

必需

NameProperty property-changed 事件。

必需

StructureChangedEvent

必需

InvokedEvent

视情况而定

ExpandCollapseStateProperty property-changed 事件。

视情况而定

ElementAddedToSelectionEvent

必需

ElementRemovedFromSelectionEvent

必需

ElementSelectedEvent

必需

ToggleStateProperty property-changed 事件。

视情况而定

ValueProperty property-changed 事件。

视情况而定

DataItem 控件类型示例

下图说明了支持列丰富信息的 List View 控件中的 DataItem 控件类型。

具有两个数据项的 List View 控件图

下表显示了与数据项控件有关的 UI Automation树的控件视图和内容视图。 每个自动化元素的控件模式都显示在括号中。Group“Contoso”也是 Data Grid 宿主控件的网格的一部分。

UI Automation树 - 控件视图

UI Automation树 - 内容视图

  • Group“Contoso”(Table、Grid)

  • DataItem“Accounts Receivable.doc”(TableItem、GridItem、SelectionItem、Invoke)

  • Image“Accounts Receivable.doc”

  • Edit“Name”(TableItem、GridItem、Value“Accounts Receivable.doc”)

  • Edit“Date modified”(TableItem、GridItem、Value“8/25/2006 3:29 PM”)

  • Edit“Size”(GridItem、TableItem、Value“11.0 KB”)

  • DataItem“Accounts Payable.doc”(TableItem、GridItem、SelectionItem、Invoke)

  • ...

  • Group“Contoso”(Table、Grid)

  • DataItem“Accounts Receivable.doc”(TableItem、GridItem、SelectionItem、Invoke)

  • Image“Accounts Receivable.doc”

  • Edit“Name”(TableItem、GridItem、Value“Accounts Receivable.doc”)

  • Edit“Date modified”(TableItem、GridItem、Value“8/25/2006 3:29 PM”)

  • Edit“Size”(GridItem、TableItem、Value“11.0 KB”)

  • DataItem“Accounts Payable.doc”(TableItem、GridItem、SelectionItem、Invoke)

如果网格表示可选项列表,则可以使用 ListItem 控件类型(而不是 DataItem 控件类型)公开相应的 UI 元素。 在前面的示例中,可以通过将 Group(“Contoso”)下的 DataItem 元素(“Accounts Receivable.doc”和“Accounts Payable.doc”)公开为 ListItem 控件类型来改进这些元素,因为该类型已支持 SelectionItem 控件模式。

请参见

参考

DataItem

概念

UI 自动化控件类型概述

UI 自动化概述