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 自动化 Elements 检索属性

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 或英语 (美国) 的“数据网格”。
UIA_NamePropertyId 请参阅注释。 数据网格控件通常从静态文本标签中获取其 Name 属性的值。 如果没有静态文本标签,应用程序开发人员必须为 Name 属性分配值。 Name 属性的值绝不能是编辑控件的文本内容。

 

所需的控件模式

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

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

 

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

必需事件

下表列出了支持数据网格控件所需的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 控件类型的列表视图控件。

screen shot of list-view control with datagrid control type

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

UI 自动化树 - 控件视图 UI 自动化树 - 内容视图
DataGrid (排序、表、选择、网格)
  • 标头
    • 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*)

 

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

概念性

UI 自动化控件类型概述

UI 自动化概述