注释
本文档适用于想要使用 System.Windows.Automation 命名空间中定义的托管 UI 自动化类的 .NET Framework 开发人员。 有关 UI 自动化的最新信息,请参阅 Windows 自动化 API:UI 自动化。
本主题提供有关 dataItem 控件类型的Microsoft UI 自动化支持的信息。 在 UI 自动化中,控件类型是控件必须满足的一组条件才能使用该 ControlTypeProperty 属性。 这些条件包括 UI 自动化树结构、UI 自动化属性值和控件模式的特定准则。
联系人列表中的条目是数据项控件的示例。 数据项控件包含最终用户感兴趣的信息。 它比简单的列表项复杂得多,因为它包含更丰富的信息。
以下部分定义 DataItem 控件类型所需的 UI 自动化树结构、属性、控件模式和事件。 UI 自动化要求适用于所有数据项控件,无论是 Windows Presentation Foundation (WPF)、Win32 还是 Windows 窗体。
必需的 UI 自动化树结构
下表描述了与数据项控件相关的 UI 自动化树的控件视图和内容视图,并描述了每个视图中可包含的内容。 有关 UI 自动化树的详细信息,请参阅 UI 自动化树概述。
UI 自动化树 - 控件视图 | UI 自动化树 - 内容视图 |
---|---|
DataItem - 变化 (0 或更多;可以在层次结构中结构化) |
DataItem - 变化 (0 或更多;可以在层次结构中结构化) |
数据网格中的数据项元素可以承载各种对象,包括另一层数据项,或特定的网格元素,如文本、图像或编辑控件。 如果数据项元素具有特定的对象角色,则应以特定控件类型的形式公开该元素;例如,网格中可选数据项的 ListItem 控件类型。
所需的 UI 自动化属性
下表列出了其值或定义与数据项控件特别相关的属性。 有关 UI 自动化属性的详细信息,请参阅 客户端的 UI 自动化属性。
资产 | 价值 | 注释 |
---|---|---|
AutomationIdProperty | 请参阅备注。 | 此属性的值需要在应用程序中的所有控件中唯一。 |
BoundingRectangleProperty | 请参阅备注。 | 包含整个控件的最外侧矩形。 |
ClickablePointProperty | 请参阅备注。 | 如果存在边界矩形,则受支持。 如果边界矩形中存在无法单击的点,而你要执行专门的命中测试,则重写并提供可单击的点。 |
ControlTypeProperty | DataItem | 对于所有 UI 框架,此值相同。 |
IsContentElementProperty | 真 实 | 数据项控件必须始终为内容。 |
IsControlElementProperty | 真 实 | 数据项控件必须始终是控件。 |
IsKeyboardFocusableProperty | 请参阅备注。 | 如果控件可以接收键盘焦点,它必须支持此属性。 |
ItemStatusProperty | 请参阅备注。 | 如果控件包含动态更新的状态,则必须支持此属性,以便辅助技术可以在元素状态更改时接收更新。 |
ItemTypeProperty | 请参阅备注。 | 这是向最终用户传达项所表示的基础对象的字符串值。 例如“Media File”或“Contact”。 |
LabeledByProperty | Null |
数据项控件没有静态文本标签。 |
LocalizedControlTypeProperty | “数据项” | 对应于 DataItem 控件类型的本地化字符串。 |
NameProperty | 请参阅备注。 | 数据项控件始终包含一个主要文本元素,该元素与用户将关联为项的最语义标识符的内容相关。 |
必需的 UI 自动化控件模式
下表列出了所有数据项控件支持所需的Microsoft UI 自动化控件模式。 有关控件模式的详细信息,请参阅 UI 自动化控件模式概述。
控件模式 | 支持 | 注释 |
---|---|---|
IExpandCollapseProvider | 取决于 | 如果数据项可以展开或折叠以显示和隐藏信息,则必须支持展开折叠模式。 |
IGridItemProvider | 取决于 | 当数据项集合存在于可以逐项导航的容器中时,数据项将支持网格项模式。 |
IScrollItemProvider | 取决于 | 所有数据项在其数据容器内的项比适合屏幕的项多时,支持滚动到视图的功能。 |
ISelectionItemProvider | 是的 | 所有数据项必须支持选择项模式,以指示何时选择该项。 |
ITableItemProvider | 取决于 | 如果数据项包含在数据网格控件类型中,则它将支持此模式。 |
IToggleProvider | 取决于 | 如果数据项包含可以循环访问的状态。 |
IValueProvider | 取决于 | 如果数据项的主文本可编辑,则必须支持值模式。 |
使用大型列表中的数据项
大型列表通常是在 UI 框架中虚拟化数据,以帮助提高性能。 因此,UI 自动化客户端不能使用 UI 自动化查询功能以在其他项容器中的方式来擦除完整树的内容。 在访问数据项的完整信息集之前,客户端应将项滚动到视图中(或展开控件以显示所有有价值的选项)。
在调用数据项的 UI 自动化元素上的 SetFocus
时,Microsoft Windows 资源管理器用例将成功返回,并将焦点设置为数据项子树内的“编辑”。
所需的 UI 自动化事件
以下表格列出了所有数据项控件必须支持的 UI 自动化事件。 有关事件的详细信息,请参阅 UI 自动化事件概述。
UI 自动化事件 | 支持 | 注释 |
---|---|---|
AutomationFocusChangedEvent | 必选 | 没有 |
BoundingRectangleProperty 属性更改事件。 | 必选 | 没有 |
IsEnabledProperty 属性更改事件。 | 必选 | 没有 |
IsOffscreenProperty 属性更改事件。 | 必选 | 没有 |
NameProperty 属性更改事件。 | 必选 | 没有 |
StructureChangedEvent | 必选 | 没有 |
InvokedEvent | 取决于 | 没有 |
ExpandCollapseStateProperty 属性更改事件。 | 取决于 | 没有 |
ElementAddedToSelectionEvent | 必选 | 没有 |
ElementRemovedFromSelectionEvent | 必选 | 没有 |
ElementSelectedEvent | 必选 | 没有 |
ToggleStateProperty 属性更改事件。 | 取决于 | 没有 |
ValueProperty 属性更改事件。 | 取决于 | 没有 |
DataItem 控件类型示例
下图演示了列表视图控件中的 DataItem 控件类型,该控件支持列的丰富信息。
下面显示了与数据项控件相关的 UI 自动化树的控件视图和内容视图。 每个自动化元素的控件模式显示在括号中。 “Contoso”组也是数据网格宿主控件的网格的一部分。
UI 自动化树 - 控件视图 | UI 自动化树 - 内容视图 |
---|---|
- 组“Contoso”(表、网格) - DataItem“Accounts Receivable.doc”(TableItem、GridItem、SelectionItem、Invoke) - 图像“帐户 Receivable.doc” - 编辑“名称”(TableItem、GridItem、Value“Accounts Receivable.doc”) - 编辑“修改日期”(TableItem,GridItem,值“8/25/2006 3:29 PM”) - 编辑“大小”(GridItem、TableItem、Value "11.0 KB) - DataItem“应付账款.doc”(TableItem、GridItem、SelectionItem、Invoke) - ... |
- 组“Contoso”(表、网格) - DataItem“Accounts Receivable.doc”(TableItem、GridItem、SelectionItem、Invoke) - 图像“帐户 Receivable.doc” - 编辑“名称”(TableItem、GridItem、Value“Accounts Receivable.doc”) - 编辑“修改日期”(TableItem,GridItem,值“8/25/2006 3:29 PM”) - 编辑“大小”(GridItem、TableItem、Value "11.0 KB) - DataItem“应付账款.doc”(TableItem、GridItem、SelectionItem、Invoke) - … |
如果网格表示可选择项的列表,则可以使用 ListItem 控件类型而不是 DataItem 控件类型公开相应的 UI 元素。 在前面的示例中,可以通过将组(“Contoso”)下的 DataItem 元素(“Accounts Receivable.doc”和“Accounts Payable.doc”)作为 ListItem 控件类型公开来对其进行改进,因为该类型已支持 SelectionItem 控件模式。