注释
本文档适用于想要使用 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 可以是具有三种状态(Expanded、 Collapsed 和 PartiallyExpanded)的 MenuItem,该 MenuItem 中的控件指定在调用 Expand 或 Collapse 时要采用的状态。
对 TreeItem 调用 Expand 可能会显示所有后代,也可能仅显示直接子级。
如果调用 Expand 或 Collapse 对控件保持其后代的状态,则应发送可见性更改事件,而不是状态更改事件。如果父控件在折叠时不保留其后代的状态,则控件可能会销毁不再可见的所有后代并引发已销毁事件;或者它可能会更改 ExpandCollapseState 每个后代并引发可见性更改事件。
为保证导航操作,最好让对象保留在具有相应可见性状态的 UI 自动化树中,而不管其父级 ExpandCollapseState 如何。 如果后代是按需生成的,则它们只能在首次显示或仅在可见时显示在 UI 自动化树中。
IExpandCollapseProvider 的必需成员
实现 IExpandCollapseProvider需要以下属性和方法。
必需成员 | 成员类型 | 注释 |
---|---|---|
ExpandCollapseState | 资产 | 没有 |
Expand | 方法 | 没有 |
Collapse | 方法 | 没有 |
AutomationPropertyChangedEventHandler | 事件 / 活动 | 此控件没有关联的事件;请使用此泛型委托。 |
例外
提供程序必须引发以下异常。
异常类型 | 条件 |
---|---|
InvalidOperationException | 当ExpandCollapseExpandCollapseState时, = 或者LeafNode会被调用。 |