实现 UI 自动化 ExpandCollapse 控件模式

更新:2007 年 11 月

本主题介绍实现 IExpandCollapseProvider 的准则和约定,包括有关属性、方法和事件的信息。本概述的结尾列出了指向其他参考资料的链接。

ExpandCollapsePattern 控件模式用于支持以可视化方式展开来显示更多内容或者以可视化方式折叠来隐藏相关内容的控件。有关实现此控件模式的控件示例,请参见 UI 自动化客户端的控件模式映射

本主题包括下列各节。

  • 实现准则和约定
  • IExpandCollapseProvider 必需的成员
  • 异常
  • 相关主题

实现准则和约定

在实现 ExpandCollapse 控件模式时,请注意以下准则和约定:

  • 聚合控件(通过一些子对象生成,这些子对象提供具有展开/折叠功能的 UI)必须支持 ExpandCollapsePattern 控件模式,而它们的子元素不必支持。例如,组合框控件是由列表框、按钮和编辑控件组合而成的,但它是唯一一个必须支持 ExpandCollapsePattern 的父组合框。

    说明:

    菜单控件是一个例外,它是对各个 MenuItem 对象的聚合。MenuItem 对象可以支持 ExpandCollapsePattern 控件模式,但是父 Menu 控件无法支持。Tree 和 Tree Item 控件也存在类似的例外。

  • 将某个控件的 ExpandCollapseState 设置为 LeafNode 后,该控件的所有 ExpandCollapsePattern 功能当前都处于非活动状态,通过该控件模式可以获取的唯一信息就是 ExpandCollapseState。如果以后添加任何子对象,则 ExpandCollapseState 会发生更改,同时 ExpandCollapsePattern 功能将被激活。

  • ExpandCollapseState 仅表示直接子对象的可见性,而不是表示所有子代对象的可见性。

  • 展开和折叠功能是特定于控件的。下面是该行为的示例。

    • Office Personal Menu 可以是具有三种状态(ExpandedCollapsedPartiallyExpanded)的 MenuItem,该 MenuItem 中的控件指定在调用 ExpandCollapse 时要采用的状态。

    • 针对 TreeItem 调用 Expand 可能会显示所有的子代,或者仅显示直接子级。

    • 如果对某个控件调用 ExpandCollapse 以保持该控件的子代的状态,则应当发送可见性更改事件,而不是状态更改事件。如果折叠父控件无法保持该控件的子代的状态,则该控件可能会销毁所有不再可见的子代并引发一个销毁事件,也可能会更改每个子代的 ExpandCollapseState 并引发一个可见性更改事件。

  • 为保证导航操作,最好让对象保留在具有相应可见性状态的 UI 自动化树中,而不管其父级的 ExpandCollapseState 如何。如果子代是按需生成的,那么,仅当它们在首次显示之后或者可见时,才能出现在 UI 自动化树中。

IExpandCollapseProvider 必需的成员

实现 IExpandCollapseProvider 需要以下属性和方法。

必需的成员

成员类型

说明

ExpandCollapseState

属性

Expand

方法

Collapse

方法

AutomationPropertyChangedEventHandler

事件

没有与此控件关联的事件,请使用这个泛型委托。

异常

提供程序必须引发以下异常。

异常类型

条件

InvalidOperationException

ExpandCollapseState = LeafNode 时,将调用 ExpandCollapse

请参见

任务

在 UI 自动化提供程序中支持控件模式

使用 TreeWalker 在 UI 自动化元素之间导航

在 UI 自动化中使用缓存

概念

UI 自动化控件模式概述

客户端的 UI 自动化控件模式

UI 自动化树概述