Condividi tramite


Come eseguire una query su un elemento virtualizzato nella visualizzazione elementi

Questo argomento descrive come usare Microsoft Automazione interfaccia utente per recuperare informazioni sull'interfaccia utente sugli elementi virtualizzati nella visualizzazione elementi di Windows 7. In questo argomento sono incluse le sezioni seguenti.

Nota

Questo argomento si applica solo a Windows 7. Tenere presente che le funzionalità di accessibilità descritte in questo argomento potrebbero cambiare nelle versioni future di Windows.

 

Panoramica

Visualizzazione elementi è un componente dell'interfaccia utente che consente agli utenti di visualizzare e interagire con file e altri elementi. In Windows 7, La visualizzazione elementi sostituisce il controllo visualizzazione elenco per presentare gli elementi nella visualizzazione predefinita di Esplora risorse. La visualizzazione elementi viene usata anche nella finestra di dialogo elemento comune, nei risultati della ricerca del menu Start e in altri elementi dell'interfaccia utente di Windows 7 che usano il controllo Esplora browser. Rispetto al controllo visualizzazione elenco, Items View offre i vantaggi seguenti agli utenti:

  • La visualizzazione elementi può presentare elementi in modi più utili, auspicabili e pertinenti, consentendo agli utenti di trovare e organizzare gli elementi più semplicemente, rapidamente e piacevole.
  • La visualizzazione elementi può visualizzare grandi set di elementi provenienti da origini dati con caratteristiche di prestazioni diverse, consentendo agli utenti di esplorare e cercare l'intera raccolta di elementi in più origini.

L'immagine seguente mostra la visualizzazione elementi in Esplora risorse.

schermata che mostra Esplora finestre con il componente visualizzazione elementi

Dal punto di vista di uno sviluppatore, la struttura generale e la funzionalità di Visualizzazione elementi è simile a quella del controllo visualizzazione elenco. La differenza principale è che Items View supporta la virtualizzazione, mentre il controllo di visualizzazione elenco non è. Inoltre, La visualizzazione elementi usa due nuove interfacce Automazione interfaccia utente per garantire che il contenuto virtualizzato fornito dalla visualizzazione elementi sia accessibile. Queste interfacce sono descritte nelle sezioni seguenti di questo argomento.

Per informazioni generali sulla virtualizzazione in Automazione interfaccia utente, vedere Uso degli elementi virtualizzati.

Struttura albero visualizzazione elementi

Nell'albero Automazione interfaccia utente, l'elemento Automazione interfaccia utente di livello superiore di Items View ha il nome "ItemsView" e il tipo di controllo "list". Nell'immagine precedente l'elemento ItemsView Automazione interfaccia utente viene descritto in rosso. Diversi elementi Automazione interfaccia utente esistono al di sotto del livello principale di ItemsView, ma solo due altri elementi Automazione interfaccia utente vengono a cui si fa riferimento in questo documento: elementi di gruppo e elementi di elenco.

Gli elementi del gruppo sono gli elementi Automazione interfaccia utente che contengono tutti gli elementi di elenco del gruppo, il loro tipo di controllo è "Group" e i relativi nomi variano a seconda del nome del gruppo. Nell'immagine precedente, il primo elemento del gruppo contiene sia l'intestazione "A-H (1)" che l'elemento di elenco "Folder" e il relativo nome è "A-H".

Gli elementi di elenco sono gli elementi Automazione interfaccia utente che rappresentano gli elementi foglia nella visualizzazione, il loro tipo di controllo è "ListItem" e i relativi nomi variano a seconda del nome dell'elemento. Nell'immagine precedente gli elementi dell'elenco sono gli elementi foglia, ad esempio "Folder", "Music" e "Picture". Questi tre elementi Automazione interfaccia utente vengono indicati dai termini elementi ItemsView, Elemento Group e ListItem nella parte restante di questo documento.

Virtualizzazione

La visualizzazione elementi usa la virtualizzazione, il che significa che gli elementi all'esterno dell'area visibile della visualizzazione non vengono recuperati dal sistema e la rappresentazione dell'interfaccia utente non viene creata. Questi elementi vengono chiamati elementi virtualizzati. Poiché non vengono creati, gli elementi virtualizzati non hanno elementi Automazione interfaccia utente e pertanto non vengono visualizzati nell'albero Automazione interfaccia utente quando un client Automazione interfaccia utente enumera l'albero. Inoltre, Automazione interfaccia utente modelli di controllo operano solo sugli elementi visibili. Ad esempio, il modello di controllo Selection restituisce solo gli elementi selezionati visibili quando un client chiama il metodo IUIAutomationSelectionPattern::GetCurrentSelection .

La visualizzazione elementi supporta la possibilità di recuperare le informazioni seguenti sugli elementi virtualizzati:

  • Conteggio del numero totale di elementi, inclusi gli elementi virtualizzati
  • Automazione interfaccia utente elementi per gli elementi virtualizzati
  • Automazione interfaccia utente elementi per gli elementi virtualizzati selezionati

Recupero di un conteggio di tutti gli elementi

Un client può usare l'elemento ItemsView per ottenere un conteggio di tutti gli elementi, nonché un conteggio degli elementi selezionati. L'elemento ItemsView offre due modi per ottenere questi conteggi. Il primo è ottenere la proprietà ItemStatus dell'elemento ItemsView e la seconda è recuperando proprietà personalizzate dall'elemento ItemsView.

La proprietà ItemStatus è una stringa che specifica un conteggio del numero totale di elementi e un conteggio degli elementi selezionati, separati da una virgola. Ad esempio: "3 elementi, 1 elemento selezionato". Questa stringa viene localizzata e può essere comunicata direttamente all'utente.

Le proprietà personalizzate dell'elemento ItemsView includono una proprietà per il conteggio degli elementi e un'altra per il conteggio delle selezioni. e comprendono:

  • ItemCount_Property_GUID (ABBF5C45-5CCC-47b7-BB4E-87CB87BBD162) - Conteggio di tutti gli elementi univoci nella visualizzazione. Se raggruppato in base a una proprietà multivalore (MVP) in modo che un singolo elemento possa essere visualizzato più volte, ogni elemento viene conteggiato una sola volta.

    (UIAutomationType: UIAutomationType_Int, Nome programmatico: "ItemCount")

  • SelectedItemCount_Property_GUID (92A053DA-2969-4021-BF27-514CFC2E4A69) - Conteggio di tutti gli elementi univoci selezionati nella visualizzazione. Se raggruppato in base a una proprietà multivalore (MVP) in modo che un singolo elemento possa essere visualizzato più volte, ogni elemento viene conteggiato una sola volta.

    (UIAutomationType: UIAutomationType_Int, Nome programmatico: "SelectedItemCount")

Queste proprietà personalizzate sono definite in Shlguid.h, incluse nel Windows Software Development Kit (SDK) e queste proprietà vengono registrate tramite il metodo IUIAutomationRegistrar::RegisterProperty . Automazione interfaccia utente client usano RegisterProperty per recuperare gli identificatori di proprietà (PROPERTYID) per le proprietà personalizzate.

Recupero di un indice di elemento rispetto a tutti gli elementi

Un client può ottenere l'indice di un elemento recuperando la proprietà ItemStatus di un elemento ListItem o recuperando una proprietà personalizzata di un elemento ListItem.

La proprietà ItemStatus è una stringa che contiene l'indice di un elemento rispetto al numero totale di elementi. Ad esempio: "elemento 1 di 3". Questa stringa viene localizzata e può essere comunicata direttamente all'utente.

La proprietà personalizzata seguente ottiene l'indice dell'elemento di un elemento ListItem:

  • ItemIndex_Property_GUID (92A053DA-2969-4021-BF27-514CFC2E4A69)- Indice assoluto basato su 1 di un elemento. Se raggruppato in base a una proprietà multivalore (MVP) in modo che un singolo elemento possa essere visualizzato due volte, ogni aspetto dell'elemento ottiene un indice separato.

    (UIAutomationType: UIAutomationType_Int, Nome programmatico: "ItemIndex")

Questa proprietà personalizzata è definita in Shlguid.h, inclusa in Windows SDK e viene registrata tramite il metodo IUIAutomationRegistrar::RegisterProperty . Automazione interfaccia utente client usano RegisterProperty per recuperare un identificatore di proprietà (PROPERTYIDs) per la proprietà personalizzata.

Recupero di un riferimento a un elemento Vitualized

Un elemento ItemsView implementa il modello di controllo ItemContainer (interfaccia IItemContainerProvider), che consente a un client di ottenere un elemento Automazione interfaccia utente per un elemento virtualizzato (un elemento esterno all'area visibile). ItemsView consente al client di trovare un elemento ListItem cercando le proprietà Name e Selection, tentando di cercare su qualsiasi altra proprietà.

Un elemento virtuale implementa solo il modello di controllo VirtualizedItem (interfaccia IVirtualizedItemProvider ). Poiché l'elemento rappresentato da un elemento Automazione interfaccia utente virtualizzato non esiste ancora, il tentativo di ottenere qualsiasi altro criterio di controllo o proprietà dell'elemento avrà esito negativo.

Gli elementi ListItem e Group sono virtualizzati, ma solo gli elementi ListItem possono essere restituiti dal modello di controllo ItemContainer . Poiché la chiamata al metodo IUIAutomationItemContainerPattern::FindItemByProperty viene eseguita nel thread dell'interfaccia utente e blocca, la visualizzazione non risponderà finché FindItemByProperty restituisce e qualsiasi altra chiamata al metodo nel provider deve attendere il completamento di FindItemByProperty . In alcuni casi , FindItemByProperty deve elaborare l'intero set di dati prima di restituire, che può essere a elevato utilizzo di risorse. Se si specifica NULL come elemento iniziale, FindItemByProperty inizia la ricerca con il primo elemento nella visualizzazione.

ItemsView supporta le proprietà seguenti per FindItemByProperty:

  • Nome (UIA_NamePropertyId): cerca il primo elemento il cui nome corrisponde completamente alla stringa specificata. Alla ricerca non viene applicata la distinzione tra maiuscole e minuscole. I caratteri jolly o la corrispondenza parziale non sono supportati. Se viene specificato un nome NULL , l'elemento successivo dopo la restituzione dell'elemento iniziale. La specifica dei nomi NULL consente a un client di Automazione interfaccia utente di enumerare tutti gli elementi nella visualizzazione. Tuttavia, l'enumerazione di tutti gli elementi è sconsigliata perché causa la realizzazione di tutti gli elementi nella visualizzazione.
  • SelectionItem_IsSelected (UIA_SelectionItemIsSelectedPropertyId): cerca il primo elemento la cui proprietà SelectionItem_IsSelected corrisponde al valore specificato. Specificare TRUE per trovare il primo elemento selezionato o FALSE per trovare il primo elemento non selezionato. Prestare attenzione quando enumera tutti gli elementi selezionati perché il numero di elementi selezionati può essere molto grande, soprattutto se l'utente ha selezionato tutti gli elementi.

Scorrimento di un elemento virtualizzato sullo schermo

Dopo aver ottenuto un riferimento a un elemento Automazione interfaccia utente per un elemento virtualizzato (fuori schermo), il client può scorrere l'elemento nella visualizzazione usando il metodo IUIAutomationVirtualizeItemPattern::Realize del modello di controllo VirtualizedItem. Dopo aver realizzato l'elemento, è visibile e tutte le proprietà e i modelli di controllo normalmente associati a un elemento ListItem sono disponibili per il client.

Solo gli elementi ListItem ottenuti dal metodo IUIAutomationItemContainerPattern::FindItemByProperty espongono il modello di controllo VirtualizedItem . Quando un elemento sullo schermo viene scorrevole, l'elemento diventa non valido e il client deve chiamare FindItemByProperty per ottenere il riferimento fuori schermo.

È anche possibile spostare gli elementi all'interno e all'esterno della visualizzazione usando il pattern di controllo Scroll (o usando le barre di scorrimento). Gli elementi e i gruppi vengono resi disponibili durante lo scorrimento nella visualizzazione e vengono virtualizzati durante lo scorrimento dalla visualizzazione.

Utilizzo di elementi virtualizzati