实现 UI 自动化 ExpandCollapse 控件模式

注释

本文档适用于想要使用 System.Windows.Automation 命名空间中定义的托管 UI 自动化类的 .NET Framework 开发人员。 有关 UI 自动化的最新信息,请参阅 Windows 自动化 API:UI 自动化

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

控件 ExpandCollapsePattern 模式用于支持直观展开以显示更多内容和折叠以隐藏内容的控件。 有关实现此控件模式的控件示例,请参阅 UI 自动化客户端的控件模式映射。

实施准则和约定

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

  • 聚合控件(使用提供扩展/折叠功能的 UI 的子对象生成)必须支持 ExpandCollapsePattern 控件模式,而子元素则不支持。 例如,组合框控件由列表框、按钮和编辑控件组合而成,但只有父组合框需要支持ExpandCollapsePattern

    注释

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

  • 当将控件的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 ExpandCollapseExpandCollapseState时, = 或者LeafNode会被调用。

另请参阅