Поделиться через


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

Замечание

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

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

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

Рекомендации по реализации и соглашения

При реализации шаблона элемента управления 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 Событие Этот элемент управления не имеет связанных событий; используйте этот универсальный делегат.

Исключения

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

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

См. также