Implementando o padrão de controle de invocação de automação da interface do usuário
Nota
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 System.Windows.Automation namespace. Para obter as informações mais recentes sobre a automação da interface do usuário, consulte API de automação do Windows: automação da interface do usuário.
Este tópico apresenta diretrizes e convenções para implementação IInvokeProvider, incluindo informações sobre eventos e propriedades. Links para referências adicionais estão listados no final do tópico.
O InvokePattern padrão de controle é usado para suportar controles que não mantêm o estado quando ativados, mas iniciam ou executam uma única ação inequívoca. Os controles que mantêm o estado, como caixas de seleção e botões de opção, devem, em vez disso, ser implementados IToggleProvider e ISelectionItemProvider respectivamente. Para obter exemplos de controles que implementam o padrão de controle Invoke, consulte Control Pattern Mapping for UI Automation Clients.
Orientações e convenções de aplicação
Ao implementar o padrão de controle Invoke, observe as seguintes diretrizes e convenções:
Os controles são implementados IInvokeProvider se o mesmo comportamento não for exposto por meio de outro provedor de padrão de controle. Por exemplo, se o Invoke método em um controle executa a mesma ação que o ExpandCollapse ou método, o controle não deve implementar IInvokeProvider.
Invocar um controle geralmente é realizado clicando ou clicando duas vezes ou pressionando ENTER, um atalho de teclado predefinido ou alguma combinação alternativa de pressionamentos de teclas.
InvokedEvent é acionada num controlo que foi ativado (como resposta a um controlo que executa a sua ação associada). Se possível, o evento deve ser gerado após o controle ter concluído a ação e retornado sem bloqueio. O evento Invoked deve ser gerado antes de atender à solicitação Invoke nos seguintes cenários:
Não é possível ou prático esperar até que a ação esteja concluída.
A ação requer interação do usuário.
A ação é demorada e fará com que o cliente chamador bloqueie por um período significativo de tempo.
Se invocar o controle tiver efeitos colaterais significativos, esses efeitos colaterais devem ser expostos através da HelpText propriedade. Por exemplo, mesmo que Invoke não esteja associado à seleção, Invoke pode fazer com que outro controle seja selecionado.
Os efeitos de focalização (ou passagem do mouse) geralmente não constituem um evento Invoked. No entanto, os controles que executam uma ação (em vez de causar um efeito visual) com base no estado de foco devem suportar o InvokePattern padrão de controle.
Nota
Essa implementação é considerada um problema de acessibilidade se o controle puder ser invocado apenas como resultado de um efeito colateral relacionado ao mouse.
Invocar um controle é diferente de selecionar um item. No entanto, dependendo do controle, invocá-lo pode fazer com que o item seja selecionado como um efeito colateral. Por exemplo, invocar um item de lista de documentos do Microsoft Word na pasta Meus Documentos seleciona o item e abre o documento.
Um elemento pode desaparecer da árvore de automação da interface do usuário imediatamente após ser invocado. A solicitação de informações do elemento fornecido pelo retorno de chamada do evento pode falhar como resultado. A pré-busca de informações armazenadas em cache é a solução recomendada.
Os controles podem implementar vários padrões de controle. Por exemplo, o controle Cor de preenchimento na barra de ferramentas do Microsoft Excel implementa os InvokePattern padrões e o ExpandCollapsePattern controle. ExpandCollapsePattern Expõe o menu e preenche InvokePattern a seleção ativa com a cor escolhida.
Membros necessários para IInvokeProvider
As seguintes propriedades e métodos são necessários para a implementação do IInvokeProvider.
Membros obrigatórios | Tipo de membro | Notas |
---|---|---|
Invoke | método | Invoke é uma chamada assíncrona e deve retornar imediatamente sem bloqueio. Esse comportamento é particularmente crítico para controles que, direta ou indiretamente, iniciam uma caixa de diálogo modal quando invocados. Qualquer cliente de automação da interface do usuário que instigou o evento permanecerá bloqueado até que a caixa de diálogo modal seja fechada. |
Exceções
Os provedores devem lançar as seguintes exceções.
Tipo de Exceção | Condição |
---|---|
ElementNotEnabledException | Se o controle não estiver habilitado. |
Consulte também
- Visão geral dos padrões de controle de automação da interface do usuário
- Suporte a padrões de controle em um provedor de automação de interface do usuário
- Padrões de controle de automação da interface do usuário para clientes
- Invoque um controle usando a automação da interface do usuário
- Visão geral da árvore de automação da interface do usuário
- Usar cache na automação da interface do usuário