Compartilhar via


Implementando o padrão de controle ExpandCollapse de interface de usuário

Observação

Esta documentação destina-se a desenvolvedores do .NET Framework que desejam usar as classes de Automação de Interface do Usuário gerenciadas definidas no namespace System.Windows.Automation. Para obter as informações mais recentes sobre Automação de Interface do Usuário, consulte API de Automação do Windows: Automação de Interface do Usuário.

Este tópico apresenta diretrizes e convenções para implementar IExpandCollapseProvider, incluindo informações sobre propriedades, métodos e eventos. Os links para referências adicionais são listados no final da visão geral.

O ExpandCollapsePattern padrão de controle é utilizado para suportar controles que se expandem visualmente para exibir mais conteúdo e se recolhem para ocultar o conteúdo. Para obter exemplos de controles que implementam esse padrão de controle, consulte mapeamento de padrões de controle para clientes de automação de interface do usuário.

Diretrizes e convenções de implementação

Ao implementar o padrão de controle ExpandCollapse, observe as seguintes diretrizes e convenções:

  • Os controles agregados, criados com objetos filho que fornecem à interface do usuário a funcionalidade de expansão/recolhimento, deverão dar suporte ao padrão de controle ExpandCollapsePattern, enquanto os elementos filho não. Por exemplo, um controle de caixa de combinação é criado com uma combinação de caixa de listagem, botão e controles de edição, mas é apenas a caixa de combinação pai que deverá dar suporte para ExpandCollapsePattern.

    Observação

    Uma exceção é o controle de menu, que é uma agregação de objetos MenuItem individuais. Os objetos MenuItem podem suportar o padrão de controle ExpandCollapsePattern, mas o controle de menu pai não é capaz de fazê-lo. Uma exceção semelhante se aplica aos controles Tree e Tree Item.

  • Quando o ExpandCollapseState de um controle é definido como LeafNode, qualquer funcionalidade de ExpandCollapsePattern está inativa no momento para o controle e as únicas informações que podem ser obtidas usando esse padrão de controle são o ExpandCollapseState. Se algum objeto filho for adicionado posteriormente, as alterações ExpandCollapseState e a funcionalidade ExpandCollapsePattern serão ativadas.

  • ExpandCollapseState refere-se apenas à visibilidade de objetos filho imediatos, não se refere à visibilidade de todos os objetos descendentes.

  • A funcionalidade Expandir e Recolher é específica do controle. Veja a seguir exemplos desse comportamento.

    • O Menu Pessoal do Office pode ser um MenuItem de três estados (Expanded, Collapsed e PartiallyExpanded) onde o controle especifica o estado a adotar quando um Expand ou Collapse é chamado.

    • Ao chamar Expand em um TreeItem, pode-se exibir todos os descendentes ou apenas os filhos imediatos.

    • Se ao chamar Expand ou Collapse em um controle mantiver o estado dos descendentes, um evento de alteração de visibilidade deverá ser enviado, não um evento de alteração de estado. Se o controle pai não mantiver o estado dos descendentes quando recolhido, o controle poderá destruir todos os descendentes que não são mais visíveis e geram um evento destruído ou poderá alterar o ExpandCollapseState para cada descendente e gerar um evento de alteração de visibilidade.

  • Para garantir a navegação, é desejável que um objeto esteja na árvore de automação da IU (com o estado de visibilidade apropriado) independentemente dos paisExpandCollapseState. Se os descendentes forem gerados sob demanda, eles só poderão aparecer na árvore de Automação da Interface do Usuário depois de serem exibidos pela primeira vez ou apenas enquanto estiverem visíveis.

Membros necessários para IExpandCollapseProvider

As propriedades e os métodos a seguir são necessários para implementar IExpandCollapseProvider.

Membros necessários Tipo de membro Anotações
ExpandCollapseState Propriedade Nenhum
Expand Método Nenhum
Collapse Método Nenhum
AutomationPropertyChangedEventHandler Acontecimento Esse controle não tem eventos associados; use este delegado genérico.

Exceções

Os provedores devem gerar as exceções a seguir.

Tipo de exceção Condição
InvalidOperationException Expand ou Collapse será chamado quando o ExpandCollapseState = LeafNode.

Consulte também