Реализация шаблона элемента управления ExpandCollapse модели автоматизации пользовательского интерфейса

Примечание.

Эта документация предназначена для разработчиков .NET Framework, желающих использовать управляемые классы автоматизации пользовательского интерфейса, определенные в пространстве имен System.Windows.Automation. Последние сведения об автоматизации пользовательского интерфейса см. в статье API автоматизации Windows. Автоматизация пользовательского интерфейса.

В этом разделе приводятся рекомендации и соглашения для реализации IExpandCollapseProvider, включая сведения о свойствах, методах и событиях. Ссылки на дополнительные материалы перечислены в конце раздела.

Шаблон элемента управления ExpandCollapsePattern используется для поддержки элементов управления, которые визуально разворачиваются для отображения дополнительного содержимого и сворачиваются для скрытия содержимого. Примеры элементов управления, реализующие данный шаблон элемента управления, см. в разделе Control Pattern Mapping for UI Automation Clients.

Правила и соглашения реализации

При реализации шаблона элемента управления ExpandCollapse обратите внимание на следующие правила и соглашения.

  • Агрегатные элементы управления, построенные с помощью дочерних объектов, предоставляющих функциональность развертывания и свертывания, должны поддерживать шаблон элемента управления ExpandCollapsePattern , а их дочерние элементы — нет. Например, элемент управления «Поле со списком строится с помощью комбинации элементов управления «Список», «Кнопка» и «Поле ввода», но только родительский элемент управления «Поле со списком» должен поддерживать ExpandCollapsePattern.

    Примечание.

    Исключением является элемент управления «Меню», который является совокупностью отдельных объектов MenuItem. Объекты MenuItem могут поддерживать шаблон элемента управления ExpandCollapsePattern , но родительский элемент управления «Меню» — нет. Аналогичное исключение применяется к элементам управления «Дерево» и «Элемент дерева».

  • Когда ExpandCollapseState элемента управления имеет значение LeafNode, в это время для него неактивны все функциональные возможности ExpandCollapsePattern и с помощью этого шаблона элемента управления можно получить только сведения ExpandCollapseState. Если впоследствии добавляются какие-либо дочерние объекты, ExpandCollapseState изменяется и функциональность ExpandCollapsePattern активируется.

  • ExpandCollapseState относится только к видимости непосредственных дочерних объектов; этот параметр не относится к видимости всех дочерних объектов.

  • Функциональность развертывания и свертывания определяется элементом управления. Ниже представлены примеры такого поведения.

    • Личное меню Office может быть тремя состояниями MenuItem (Expanded, Collapsed и PartiallyExpanded), где элемент управления задает принимаемое состояние, когда вызывается метод Expand или Collapse .

    • Вызов метода Expand в TreeItem может отображать все потомки или только непосредственные дочерние элементы.

    • Если вызов Expand или Collapse в элементе управления поддерживает состояние его потомков, должно отправляться событие изменения видимости, а не событие изменения состояния. Если родительский элемент управления не поддерживает состояние своих потомков при сворачивании, то этот элемент управления может уничтожить всех потомков, которые больше не отображаются, и вызвать событие уничтожения; или же он может изменить ExpandCollapseState для каждого потомка и вызвать событие изменения видимости.

  • Чтобы гарантировать навигацию, желательно, чтобы объект был в дереве модель автоматизации пользовательского интерфейса (с соответствующим состоянием видимости) независимо от его родителейExpandCollapseState. Если потомки создаются по требованию, они могут отображаться только в дереве модель автоматизации пользовательского интерфейса после первого отображения или только в то время как они видны.

Обязательные члены для IExpandCollapseProvider

Следующие свойства и методы обязательны для реализации IExpandCollapseProvider.

Обязательные члены Тип члена Примечания.
ExpandCollapseState Свойство нет
Expand Способ нет
Collapse Способ нет
AutomationPropertyChangedEventHandler Событие Этот элемент управления не имеет связанных событий; используйте этот универсальный делегат.

Исключения

Поставщики должны вызывать следующие исключения.

Тип исключения Condition
InvalidOperationException Вызывается Expand или Collapse , когда ExpandCollapseState = LeafNode.

См. также