Implementar o padrão de controle de rolagem de automação da interface do 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 artigo apresenta diretrizes e convenções para implementar IScrollProvider, incluindo informações sobre eventos e propriedades. Links para referências adicionais são listados no final do tópico.
O padrão de controle ScrollPattern é usado para oferecer suporte a um controle que atua como um contêiner rolável para uma coleção de objetos filho. O controle não é necessário para usar barras de rolagem para dar suporte a essa funcionalidade, embora normalmente o faça.
Exemplo de um controle de rolagem que não usa barras de rolagem
Para ver exemplos de controles que implementam esse controle, confira 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 de Rolagem, observe as seguintes diretrizes e convenções:
O filho desse controle deve implementar IScrollItemProvider.
As barras de rolagem de um controle de contêiner não dão suporte ao padrão de controle ScrollPattern. Em vez disso, eles devem dar suporte ao padrão de controle RangeValuePattern.
Quando a rolagem é medida em percentuais, todos os valores ou quantias relacionadas à graduação de rolagem devem ser normalizados para um intervalo de 0 a 100.
HorizontallyScrollableProperty e VerticallyScrollableProperty são independentes de IsEnabledProperty.
Se HorizontallyScrollableProperty =
false
, então HorizontalViewSizeProperty deve ser definido como 100% e HorizontalScrollPercentProperty deve ser definido como NoScroll. Da mesma forma, se VerticallyScrollableProperty =false
, então VerticalViewSizeProperty deve ser definido como 100% e VerticalScrollPercentProperty deve ser definido como NoScroll. Isso permite que um cliente de automação da interface do usuário use esses valores de propriedade dentro do método SetScrollPercent, evitando uma condição de corrida se uma direção na qual o cliente não está interessado que a rolagem se ative seja habilitada.HorizontalScrollPercent é específico da localidade. A definição de HorizontalScrollPercent = 100,0 deve definir o local de rolagem do controle para o equivalente à sua posição mais à direita para idiomas como inglês, que são lidos da esquerda para a direita. Como alternativa, para idiomas como árabe que leem da direita para a esquerda, definir HorizontalScrollPercent = 100,0 deve definir o local de rolagem para a posição mais à esquerda.
Membros necessários para IScrollProvider
As propriedades e os métodos a seguir são necessários para implementar IScrollProvider.
Membro obrigatório | Tipo de membro | Observações |
---|---|---|
HorizontalScrollPercent | Propriedade | Nenhum |
VerticalScrollPercent | Propriedade | Nenhum |
HorizontalViewSize | Propriedade | Nenhum |
VerticalViewSize | Propriedade | Nenhum |
HorizontallyScrollable | Propriedade | Nenhum |
VerticallyScrollable | Propriedade | Nenhum |
Scroll | Método | Nenhum |
SetScrollPercent | Método | Nenhum |
Esse padrão de controle não tem eventos associados.
Exceções
Os provedores devem gerar as exceções a seguir.
Tipo de exceção | Condição |
---|---|
ArgumentException | Scroll lançará essa exceção se um controle oferecer suporte a valores SmallIncrement exclusivamente para rolagem horizontal ou vertical, mas um valor LargeIncrement é passado. |
ArgumentException | SetScrollPercent gera essa exceção quando um valor que não pode ser convertido em um duplo é aprovado. |
ArgumentOutOfRangeException | SetScrollPercent lança essa exceção quando um valor maior que 100 ou menor que 0 é aprovado (exceto -1, que é equivalente a NoScroll). |
InvalidOperationException | Tanto Scroll quanto SetScrollPercent lançarão essa exceção quando for feita uma tentativa de rolar em uma direção não suportada. |
Confira também
- Visão Geral de Padrões de Controle de Automação de Interface de Usuário
- Padrões de controle de suporte em um provedor de automação da interface do usuário
- Padrões de Controle para Clientes de Automação de IU
- Visão geral da árvore de automação de interface do usuário
- Usar armazenamento em cache em automação de interface do usuário