Trabalhando com itens virtualizados

Este tópico descreve como usar a funcionalidade fornecida pelos padrões de controle contido e VirtualizedItem para localizar e recuperar informações sobre itens virtualizados.

Visão geral da virtualização

Controles que contêm um grande número de itens filho podem usar a virtualização para gerenciar os itens com eficiência. Com a virtualização, o controle mantém informações completas na memória apenas para um subconjunto de itens em um determinado momento. Normalmente, o subconjunto inclui apenas os itens que estão visíveis para o usuário no momento. As informações completas sobre os itens virtualizados restantes são mantidas no armazenamento e são carregadas na memória ou realizadas, pois o controle precisa dele, por exemplo, à medida que novos itens se tornam visíveis para o usuário.

Os controles que usam a virtualização representam um desafio porque apenas itens percebidos estão totalmente disponíveis como elementos de automação da interface do usuário da Microsoft na árvore de automação da interface do usuário. Os itens virtualizados não existem na árvore, portanto, as informações sobre eles não estão disponíveis para os clientes. Para recuperar informações sobre itens virtualizados, os clientes precisam de uma maneira de forçar a automação da interface do usuário a passar a solicitação para obter os itens para o controle. Depois que os itens forem percebidos, a automação da interface do usuário poderá criar elementos de automação da interface do usuário para eles. A automação da interface do usuário inclui dois padrões de controle para permitir que os clientes trabalhem com itens virtualizados: MyContainer e VirtualizedItem.

Como um controle dá suporte à virtualização

Qualquer controle que possa conter itens virtualizados deve dar suporte ao padrão de controle de IsContainer . Além disso, qualquer item que possa ser virtualizado deve dar suporte ao padrão de controle VirtualizedItem . A funcionalidade que é exposta pelos padrões de controle de contêiner e VirtualizedItem é acessível aos clientes por meio das interfaces IUIAutomationItemContainerPattern e IUIAutomationVirtualizedItemPattern .

Como os clientes encontram e percebem itens virtualizados

Os clientes podem usar o método IUIAutomationItemContainerPattern:: FindItemByProperty para pesquisar itens filho no contêiner com base no valor de uma determinada propriedade. O método também pode recuperar o primeiro item no contêiner ou o item que segue o item especificado. Se um item filho correspondente for encontrado, o FindItemByProperty recuperará uma interface IUIAutomationElement para o item. No entanto, se o item filho for virtualizado, a interface IUIAutomationElement será um espaço reservado. O erro UIA _ E _ ELEMENTNOTAVAILABLE ocorre quando o cliente tenta usar a interface IUIAutomationElement para recuperar valores de propriedade ou chamar métodos que ainda não estão disponíveis. Quais propriedades ou métodos estão disponíveis por meio de um espaço reservado depende da implementação do controle. O único requisito para um espaço reservado é dar suporte à interface IUIAutomationVirtualizedItemPattern .

O erro UIA _ E _ ELEMENTNOTAVAILABLE é uma indicação para o cliente que um item pode ser virtualizado. O cliente deve responder recuperando a interface IUIAutomationVirtualizedItemPattern para o item e, em seguida, obtendo o item chamando o método IUIAutomationVirtualizedItemPattern:: concretizar . Se isso tiver sucesso, a interface IUIAutomationElement será totalmente funcional com todas as propriedades apropriadas disponíveis.

Dependendo da implementação do controle, chamar IUIAutomationVirtualizedItemPattern:: perceber pode fazer com que o controle role o item para a exibição. No entanto, um cliente não deve confiar no item que rola para a exibição ou tornou-se visível. Para garantir que o item esteja visível, o cliente pode usar o método IUIAutomationScrollItemPattern:: ScrollIntoView .

Exemplo

Por exemplo, código que mostra como usar o suporte de automação da interface do usuário para virtualização, consulte como recuperar um item virtualizado.

Visão Geral de Padrões de Controle de Automação de Interface de Usuário