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

Observação

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

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

O padrão de controle ExpandCollapsePattern é usado para dar suporte a controles que expandem visualmente para exibir mais conteúdo e recolhem para ocultar o conteúdo. Para ver exemplos de controles que implementam esse padrão de controle, consulte Mapeamento de Padrões de Controle para clientes da Automação da 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 é um agregado de objetos MenuItem individuais. Os objetos MenuItem poderão dar suporte ao padrão de controle ExpandCollapsePattern, mas o controle Menu pai não. Uma exceção semelhante se aplica aos controles Árvore e Item de árvore.

  • Quando ExpandCollapseState de um controle for definido como LeafNode, qualquer funcionalidade ExpandCollapsePattern ficará inativa no momento para o controle e a única informação que poderá ser obtida usando esse padrão de controle será 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. Seguem-se exemplos deste comportamento.

    • O Menu Pessoal do Office pode ser um MenuItem de três estados (Expanded, Collapsed ePartiallyExpanded) em que o controle especifica o estado a ser adotado quando um Expand ou Collapse for chamado.

    • Chamar Expand em um TreeItem poderá exibir todos os descendentes ou apenas 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 IU após serem exibidos pela primeira vez ou apenas enquanto estiverem visíveis.

Membros obrigatórios para IExpandCollapseProvider

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

Membros necessários Tipo de membro Observações
ExpandCollapseState Propriedade Nenhum
Expand Método Nenhum
Collapse Método Nenhum
AutomationPropertyChangedEventHandler Evento Esse controle não tem eventos associados, portanto, 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.

Confira também