ExpandCollapse 控件模式

介绍实现 IExpandCollapseProvider 的准则和约定,包括有关属性、方法和事件的信息。 ExpandCollapse 控件模式用于支持直观展开以显示更多内容的控件,并折叠以隐藏内容。

有关实现此控件模式的控件示例,请参阅 控件类型及其支持的控件模式

本主题包含以下各节:

实现准则和约定

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

  • 使用为 UI 提供展开/折叠功能的子对象生成的聚合控件必须支持 ExpandCollapse 控件模式,而它们的子元素则不支持。 例如,组合框控件是使用列表框、按钮和编辑控件的组合生成的,但它只是父组合框必须支持 ExpandCollapse 控件模式。

    注意

    菜单控件例外,它是单个菜单项对象的聚合。 菜单项对象可以支持 ExpandCollapse 控件模式,但父菜单控件不能。 类似的异常适用于树和树项控件。

     

  • 当控件的 IExpandCollapseProvider::ExpandCollapseState 设置为 ExpandCollapseState_LeafNode 时,控件的任何 ExpandCollapse 功能当前都处于非活动状态,并且使用此控件模式获得的唯一信息是 ExpandCollapseState。 如果随后添加了任何子对象, 则 ExpandCollapseState 将更改, 并激活 ExpandCollapse 功能。

  • ExpandCollapseState 仅指直接子对象的可见性;它不引用所有后代对象的可见性。

  • IExpandCollapseProvider::Expand and Collapse 功能特定于控件。 下面是该行为的示例。

    • Office 个人菜单可以是 (“展开”、“折叠”和“PartiallyExpanded”) 的三种状态菜单项,其中控件指定要在调用 “展开” 或“ 折叠 ”时采用的状态。
    • 在树项上调用 Expand 可能会显示所有后代或仅直接子项。
    • 如果对控件调用 ExpandCollapse 维护其后代的状态,则应发送可见性更改事件,而不是状态更改事件。 如果父控件在折叠时不保持其后代的状态,则控件可能会销毁不再可见的所有后代并引发销毁事件;或者,它可能会更改每个后代的 ExpandCollapseState 并引发可见性更改事件。
  • 为了保证导航,无论对象的父级 ExpandCollapseState 是什么,都希望对象位于 Microsoft UI 自动化 树 (中,其可见性状态) 。 如果后代是按需生成的,那么,仅当它们在首次显示之后或者可见时,才能出现在 UI 自动化树中。

IExpandCollapseProvider 的必需成员

实现 IExpandCollapseProvider 接口需要以下属性、方法和事件。

必需的成员 成员类型 说明
ExpandCollapseState 属性
展开 方法
折叠 方法
IUIAutomationPropertyChangedEventHandler 事件 此控件没有关联的事件;使用此泛型事件处理程序。

 

控件类型及其支持的控件模式

UI 自动化控件模式概述

UI 自动化树概述