Compartilhar via


Como consultar um item virtualizado no modo de exibição de itens

Este tópico descreve como usar o Microsoft Automação da Interface do Usuário para recuperar informações da interface do usuário sobre itens virtualizados na Exibição de Itens do Windows 7. Este tópico inclui as seções a seguir.

Observação

Este tópico se aplica somente ao Windows 7. Lembre-se de que os recursos de acessibilidade descritos neste tópico podem mudar em versões futuras do Windows.

 

Visão geral

Exibição de Itens é um componente de interface do usuário que permite que os usuários exibam e interajam com arquivos e outros itens. No Windows 7, o Modo de Exibição de Itens substitui o controle de exibição de lista para apresentar itens na exibição padrão do Windows Explorer. A Exibição de Itens também é usada na caixa de diálogo Item Comum, nos resultados da pesquisa do menu Iniciar e em outros elementos da interface do usuário do Windows 7 que usam o controle navegador Explorer. Em comparação com o controle de exibição de lista, o Modo de Exibição de Itens oferece as seguintes vantagens aos usuários:

  • Exibição de Itens pode apresentar itens de maneiras mais úteis, desejáveis e relevantes, permitindo que os usuários encontrem e organizem itens de maneira mais simples, rápida e agradável.
  • Exibição de Itens pode exibir grandes conjuntos de itens de fontes de dados que têm características de desempenho diferentes, permitindo que os usuários procurem e pesquisem toda a coleção de itens em várias fontes.

A imagem a seguir mostra a Exibição de Itens no Windows Explorer.

captura de tela mostrando o Windows Explorer com o componente de exibição de itens

Da perspectiva de um desenvolvedor, a estrutura geral e a funcionalidade do Modo de Exibição de Itens são semelhantes à do controle de exibição de lista. A main diferença é que o Modo de Exibição de Itens dá suporte à virtualização, enquanto o controle de exibição de lista não. Além disso, o Modo de Exibição de Itens usa duas novas interfaces Automação da Interface do Usuário para garantir que o conteúdo virtualizado fornecido pelo Modo de Exibição de Itens esteja acessível. Essas interfaces são descritas nas seções a seguir deste tópico.

Para obter informações gerais sobre virtualização em Automação da Interface do Usuário, consulte Trabalhando com itens virtualizados.

Estrutura de árvore de exibição de itens

Na árvore Automação da Interface do Usuário, o elemento Automação da Interface do Usuário de nível superior do Modo de Exibição de Itens tem o nome "ItemsView" e o tipo de controle "list". Na imagem anterior, o elemento itemsView Automação da Interface do Usuário é descrito em vermelho. Existem vários elementos Automação da Interface do Usuário abaixo do nível superior de ItemsView, mas apenas dois outros elementos Automação da Interface do Usuário são referenciados neste documento: itens de grupo e itens de lista.

Os itens de grupo são os elementos Automação da Interface do Usuário que contêm todos os itens de lista desse grupo— seu tipo de controle é "Group" e seus nomes variam dependendo do nome do grupo. Na imagem anterior, o primeiro item de grupo contém o cabeçalho "A-H (1)" e o item de lista "Pasta", e seu nome é "A-H".

Os itens de lista são os elementos Automação da Interface do Usuário que representam os itens folha no modo de exibição— seu tipo de controle é "ListItem" e seus nomes variam dependendo do nome do item. Na imagem anterior, os elementos de lista são os elementos folha, como "Pasta", "Música" e "Imagem". Esses três elementos Automação da Interface do Usuário são referenciados pelos termos elemento ItemsView, elemento Group e elemento ListItem no restante deste documento.

Virtualização

A Exibição de Itens usa virtualização, o que significa que os itens fora da área visível do modo de exibição não são buscados do sistema e a representação da interface do usuário deles não é criada. Esses itens são chamados de itens virtualizados. Como eles não são criados, os itens virtualizados não têm elementos Automação da Interface do Usuário e, portanto, não aparecem na árvore Automação da Interface do Usuário quando um cliente Automação da Interface do Usuário enumera a árvore. Além disso, Automação da Interface do Usuário padrões de controle operam apenas em elementos visíveis. Por exemplo, o padrão de controle Seleção retorna apenas os itens selecionados visíveis quando um cliente chama o método IUIAutomationSelectionPattern::GetCurrentSelection .

A Exibição de Itens dá suporte à capacidade de recuperar as seguintes informações sobre itens virtualizados:

  • Uma contagem do número total de itens, incluindo itens virtualizados
  • elementos Automação da Interface do Usuário para itens virtualizados
  • Automação da Interface do Usuário elementos para os itens virtualizados selecionados

Obtendo uma contagem de todos os itens

Um cliente pode usar o elemento ItemsView para obter uma contagem de todos os itens, bem como uma contagem dos itens selecionados. O elemento ItemsView fornece duas maneiras de obter essas contagens. A primeira é obtendo a propriedade ItemStatus do elemento ItemsView e a segunda é obtendo propriedades personalizadas do elemento ItemsView.

A propriedade ItemStatus é uma cadeia de caracteres que especifica uma contagem do número total de itens e uma contagem dos itens selecionados, separados por uma vírgula. Por exemplo: "3 itens, 1 item selecionado". Essa cadeia de caracteres é localizada e pode ser comunicada diretamente ao usuário.

As propriedades personalizadas do elemento ItemsView incluem uma propriedade para a contagem de itens e outra para a contagem de seleção. Eles incluem:

  • ItemCount_Property_GUID (ABBF5C45-5CCC-47b7-BB4E-87CB87BBD162)— A contagem de todos os itens exclusivos na exibição. Se agrupado por uma propriedade de vários valores (MVP) para que um único item possa aparecer várias vezes, cada item será contado apenas uma vez.

    (UIAutomationType: UIAutomationType_Int, Nome Programático: "ItemCount")

  • SelectedItemCount_Property_GUID (92A053DA-2969-4021-BF27-514CFC2E4A69)— A contagem de todos os itens exclusivos selecionados no modo de exibição. Se agrupado por uma propriedade de vários valores (MVP) para que um único item possa aparecer várias vezes, cada item será contado apenas uma vez.

    (UIAutomationType: UIAutomationType_Int, Nome Programático: "SelectedItemCount")

Essas propriedades personalizadas são definidas em Shlguid.h, que está incluído no SDK (Software Development Kit) do Windows, e essas propriedades são registradas por meio do método IUIAutomationRegistrar::RegisterProperty . Automação da Interface do Usuário clientes usam RegisterProperty para recuperar property identifiers (PROPERTYIDs) para as propriedades personalizadas.

Obtendo um índice de item em relação a todos os itens

Um cliente pode obter o índice de um item obtendo a propriedade ItemStatus de um elemento ListItem ou obtendo uma propriedade personalizada de um elemento ListItem.

A propriedade ItemStatus é uma cadeia de caracteres que contém o índice de um item em relação ao número total de itens. Por exemplo: "item 1 de 3". Essa cadeia de caracteres é localizada e pode ser comunicada diretamente ao usuário.

A seguinte propriedade personalizada obtém o índice de item de um elemento ListItem:

  • ItemIndex_Property_GUID (92A053DA-2969-4021-BF27-514CFC2E4A69)— o índice absoluto baseado em 1 de um item. Se agrupado por uma propriedade de vários valores (MVP) para que um único item possa aparecer duas vezes, cada aparência do item obterá um índice separado.

    (UIAutomationType: UIAutomationType_Int, Nome Programático: "ItemIndex")

Essa propriedade personalizada é definida em Shlguid.h, que está incluída no SDK do Windows e é registrada por meio do método IUIAutomationRegistrar::RegisterProperty . Automação da Interface do Usuário clientes usam RegisterProperty para recuperar um property identifier (PROPERTYIDs) para a propriedade personalizada.

Obtendo uma referência a um item vitualizado

Um elemento ItemsView implementa o padrão de controle ItemContainer (interface IItemContainerProvider), que permite que um cliente obtenha um elemento Automação da Interface do Usuário para um item virtualizado (um item fora da área visível). ItemsView permite que o cliente localize um elemento ListItem pesquisando nas propriedades Nome e Seleção– a tentativa de pesquisar em qualquer outra propriedade falhará.

Um elemento virtual implementa apenas o padrão de controle VirtualizedItem (interface IVirtualizedItemProvider ). Como o item representado por um elemento Automação da Interface do Usuário virtualizado ainda não existe, a tentativa de obter qualquer outro padrão de controle ou propriedade do elemento falhará.

Os elementos ListItem e Group são virtualizados, mas somente elementos ListItem podem ser retornados do padrão de controle ItemContainer . Como a chamada para o método IUIAutomationItemContainerPattern::FindItemByProperty é executada no thread da interface do usuário e está bloqueando, a exibição não responderá até que FindItemByProperty retorne e quaisquer outras chamadas de método no provedor devem aguardar até que FindItemByProperty seja concluído. Em alguns casos, FindItemByProperty deve processar todo o conjunto de dados antes de retornar, o que pode ter uso intensivo de recursos. Especificar NULL como o elemento inicial faz com que FindItemByProperty inicie a pesquisa com o primeiro item na exibição.

ItemsView dá suporte às seguintes propriedades para FindItemByProperty:

  • Nome (UIA_NamePropertyId)— pesquisa o primeiro item cujo nome corresponde totalmente à cadeia de caracteres especificada. A pesquisa não diferencia maiúsculas de minúsculas. Não há suporte para caracteres curinga ou correspondência parcial. Se um nome NULL for especificado, o próximo item após o elemento inicial será retornado. Especificar nomes NULL permite que um cliente Automação da Interface do Usuário enumere todos os itens na exibição; no entanto, a enumeração de todos os itens é desencorajada porque faz com que todos os itens na exibição sejam realizados.
  • SelectionItem_IsSelected (UIA_SelectionItemIsSelectedPropertyId)— pesquisa o primeiro item cuja propriedade SelectionItem_IsSelected corresponde ao valor especificado. Especifique TRUE para localizar o primeiro item selecionado ou FALSE para localizar o primeiro item não selecionado. Tenha cuidado ao enumerar todos os itens selecionados porque o número de itens selecionados pode ser muito grande, especialmente se o usuário tiver selecionado todos os itens.

Rolando um item virtualizado na tela

Depois de obter uma referência a um elemento Automação da Interface do Usuário para um item virtualizado (fora da tela), o cliente pode rolar o item para exibição usando o método IUIAutomationVirtualizeItemPattern::Realize do padrão de controle VirtualizedItem. Depois que o item é realizado, ele fica visível e todas as propriedades e padrões de controle normalmente associados a um elemento ListItem estão disponíveis para o cliente.

Somente os elementos ListItem obtidos pelo método IUIAutomationItemContainerPattern::FindItemByProperty expõem o padrão de controle VirtualizedItem . Quando um elemento na tela é rolado para fora da tela, o elemento se torna inválido e o cliente deve chamar FindItemByProperty para obter a referência fora da tela.

Também é possível mover itens para dentro e para fora da exibição usando o padrão de controle De rolagem (ou usando as barras de rolagem). Os itens e grupos são realizados à medida que rolam para a exibição e são virtualizados à medida que rolam para fora da exibição.

Trabalhando com itens virtualizados