DataGrid 控件类型

本主题提供有关 Microsoft UI 自动化对 DataGrid 控件类型的支持的信息。

DataGrid 控件类型允许用户轻松处理包含列或行中显示的数据或自动化元素的项。 数据网格控件在行中显示项,在列中显示有关这些项的信息。 Windows Vista 资源管理器中的列表视图控件是支持 DataGrid 控件类型的示例。

以下部分定义 DataGrid 控件类型所需的UI 自动化树结构、属性、控件模式和事件。 UI 自动化要求适用于 UI 框架/平台集成UI 自动化控件类型和控件模式支持的所有数据网格控件。

本主题包含以下各节:

典型树结构

下表描述了与数据网格控件相关的UI 自动化树的典型控件和内容视图,并描述了每个视图中可以包含的内容。 有关 UI 自动化树的详细信息,请参阅 UI 自动化树概述

控件视图 内容视图
  • DataGrid
    • 标头(0 个、1 个 或 2 个)
      • HeaderItem(列数或行数)
    • DataItem (0 或更多;可以在层次结构中构建)
  • DataGrid
    • DataItem (0 或更多;可以在层次结构中构建)

 

相关属性

下表列出了值或定义与 DataGrid 控件类型特别相关的UI 自动化属性。 有关UI 自动化属性的详细信息,请参阅从UI 自动化元素检索属性

UI 自动化属性 说明
UIA_AutomationIdPropertyId 请参阅注释。 此属性的值在UI 自动化树的原始视图中的所有对等元素中必须是唯一的。
UIA_BoundingRectanglePropertyId 请参阅注释。 包含整个控件的最外层矩形。
UIA_ClickablePointPropertyId 请参阅注释。 如果存在边界矩形,则受支持。 如果边界矩形中的每个点都不可单击,并且元素执行专门的命中测试,请重写并提供一个可单击的点。
UIA_ControlTypePropertyId DataGrid
UIA_IsContentElementPropertyId TRUE 此属性的值必须始终为 TRUE。 这意味着数据网格控件必须始终位于 UI 自动化树的内容视图中。
UIA_IsControlElementPropertyId TRUE 此属性的值必须始终 为 TRUE。 这意味着数据网格控件必须始终包含在UI 自动化树的控件视图中。
UIA_IsKeyboardFocusablePropertyId 请参阅注释。 如果该控件可以接收键盘焦点,则它必须支持此属性。
UIA_LabeledByPropertyId 请参阅注释。 如果存在静态文本标签,则此属性必须公开对该控件的引用。
UIA_LocalizedControlTypePropertyId 请参阅注释。 对应于 DataGrid 控件类型的本地化字符串。 en-US 或英语 (美国) 的默认值为“data grid”。
UIA_NamePropertyId 请参阅注释。 数据网格控件通常从静态文本标签获取其 Name 属性的值。 如果没有静态文本标签,则应用程序开发人员必须为 Name 属性赋值。 Name 属性的值绝不能是编辑控件的文本内容。

 

所需的控件模式

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

控件模式 支持 说明
IGridProvider 必须 数据网格控件本身始终支持 Grid 控件模式,因为它包含的项具有在网格中布局的元数据。
IScrollProvider 依赖的对象 是否能够滚动数据网格取决于内容以及滚动条是否存在。
ISelectionProvider 依赖的对象 能否选择数据网格取决于内容。
ITableProvider 依赖的对象 具有 标头的数据网格控件应支持 控件模式。

 

数据网格容器内的数据项至少将支持:

  • 如果数据网格是可选的,则 SelectionItem 控件模式 ()
  • 如果数据网格可滚动) ,scrollItem 控件模式 (
  • GridItem 控件模式
  • 如果数据网格具有标头) ,则 TableItem 控件模式 (

必需事件

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

UI 自动化事件 说明
UIA_AutomationFocusChangedEventId
UIA_BoundingRectanglePropertyId 属性更改事件。
UIA_IsEnabledPropertyId 属性更改事件。 如果控件支持 IsEnabled 属性,则必须支持此事件。
UIA_IsOffscreenPropertyId 属性更改事件。 如果控件支持 IsOffscreen 属性,则必须支持此事件。
UIA_LayoutInvalidatedEventId
UIA_StructureChangedEventId
UIA_MultipleViewCurrentViewPropertyId 属性更改事件。 如果控件支持 MultipleView 控件模式的 CurrentView 属性,则必须支持此事件。
UIA_ScrollHorizontallyScrollablePropertyId 属性更改事件。 如果控件支持 Scroll 控件模式,则必须支持此事件。
UIA_ScrollHorizontalScrollPercentPropertyId 属性更改事件。 如果控件支持 Scroll 控件模式,则必须支持此事件。
UIA_ScrollHorizontalViewSizePropertyId 属性更改事件。 如果控件支持 Scroll 控件模式,则必须支持此事件。
UIA_ScrollVerticalScrollPercentPropertyId 属性更改事件。 如果控件支持 Scroll 控件模式,则必须支持此事件。
UIA_ScrollVerticallyScrollablePropertyId 属性更改事件。 如果控件支持 Scroll 控件模式,则必须支持此事件。
UIA_ScrollVerticalViewSizePropertyId 属性更改事件。 如果控件支持 Scroll 控件模式,则必须支持此事件。
UIA_Selection_InvalidatedEventId

 

DataGrid 控件类型示例

下图演示了实现 DataGrid 控件类型的列表视图控件。

具有 datagrid 控件类型的列表视图控件的屏幕截图

下面显示了与列表视图控件相关的UI 自动化树的控件视图和内容视图。 每个自动化元素的控件模式均显示在括号中。

UI 自动化树 - 控件视图 UI 自动化树 - 内容视图
DataGrid (Sort、Table、Selection、Grid)
  • 标头
    • HeaderItem“名称”(Invoke)
    • HeaderItem“修改日期” (Invoke)
    • HeaderItem“大小” (Invoke)
  • Group“Contoso”(TableItem、GridItem、SelectionItem、Table*、Grid*)
    • DataItem“Accounts Receivable.doc”(SelectionItem、Invoke、TableItem*、GridItem*)
    • DataItem“Accounts Payable.doc”(SelectionItem、Invoke、TableItem*、GridItem*)
DataGrid(Table、Grid、Selection)
  • Group“Contoso”(TableItem、GridItem、SelectionItem、Table*、Grid*)
    • DataItem“Accounts Receivable.doc”(SelectionItem、Invoke、TableItem*、GridItem*)
    • DataItem“Accounts Payable.doc”(SelectionItem、Invoke、TableItem*、GridItem*)

 

*前面的示例显示了一个包含多个级别的控件的数据网格。 Group (“Contoso”) 控件包含两个 DataItem 控件, (“Accounts Receivable.doc”和“Accounts Payable.doc”) 。 DataGrid/GridItem 对在另一级别独立于一对。 下的 DataItem 控件也可以作为 ListItem 控件类型公开,从而使它们更清楚地显示为可选择的对象,而不是简单的数据元素。 此示例不包括分组数据项的子元素。 有关多级控件的另一个示例,请参阅 DataItem 控件类型。

概念性

UI 自动化控件类型概述

UI 自动化概述