Partilhar via


Implementando o padrão de controle ExpandCollapse da automação da interface do usuário

Observação

Esta documentação destina-se a desenvolvedores do .NET Framework que desejam usar as classes de 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 de utilizador, consulte API de automação do Windows: Automação da Interface de Utilizador.

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 estão listados no final da visão geral.

O ExpandCollapsePattern padrão de controlo é usado para suportar controlos que se expandem visualmente para exibir mais conteúdo e se recolhem para ocultar conteúdo. Para obter exemplos de controles que implementam esse padrão de controle, consulte Control Pattern Mapping for UI Automation Clients.

Orientações e convenções de aplicação

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

  • Os controlos agregados — criados com objetos filho que fornecem à interface do utilizador a funcionalidade de expansão/contração — devem oferecer suporte ao ExpandCollapsePattern padrão de controlo, enquanto os seus elementos filho não. Por exemplo, um controlo de caixa de combinação é construído com uma combinação de caixa de listagem, botão e controlos de edição, mas é apenas a caixa de combinação principal que deve suportar o ExpandCollapsePattern.

    Observação

    Uma exceção é o controle menu, que é uma agregação de objetos MenuItem individuais. Os objetos MenuItem podem oferecer suporte ao ExpandCollapsePattern padrão de controle, mas o controle Menu pai não. Uma exceção semelhante se aplica aos controles Tree e Tree Item.

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

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

  • A funcionalidade Expandir e Recolher é específica do controle. A seguir estão 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 ser adotado quando um Expand ou Collapse é chamado.

    • Ao chamar Expand num TreeItem, pode exibir todos os descendentes ou apenas os filhos imediatos.

    • Se chamar Expand ou Collapse acionar um controle mantiver o estado de seus descendentes, um evento de alteração de visibilidade deve ser enviado, não um evento de mudança de estado Se o controle pai não mantiver o estado de seus descendentes quando colapsado, o controle pode destruir todos os descendentes que não são mais visíveis e gerar um evento destruído, ou pode alterar o ExpandCollapseState para cada descendente e gerar um evento de mudança de visibilidade.

  • Para garantir a navegação, é desejável que um objeto esteja na árvore de automação da interface do usuário (com o estado de visibilidade apropriado), independentemente de seus pais ExpandCollapseState. 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 somente enquanto estiverem visíveis.

Membros necessários para IExpandCollapseProvider

As seguintes propriedades e métodos são necessários para a implementação do IExpandCollapseProvider.

Membros obrigató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; Use este delegado genérico.

Exceções

Os provedores devem lançar as seguintes exceções.

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

Ver também