Come eseguire query su un elemento virtualizzato nella visualizzazione Elementi
Questo argomento descrive come usare Automazione interfaccia utente Microsoft per recuperare informazioni sull'interfaccia utente sugli elementi virtualizzati nella visualizzazione Elementi di Windows 7. Questo argomento include 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
- struttura albero visualizzazione elementi
- Virtualizzazione
- ottenere un conteggio di tutti gli elementi
- Ottenere un indice di un elemento rispetto a tutti gli elementi
- Ottenere un riferimento a un elemento virtualizzato
- Scorrimento di un Elemento Virtualizzato sullo Schermo
- argomenti correlati
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 elenco per la presentazione di elementi nella visualizzazione predefinita di Esplora Risorse. La visualizzazione elementi viene usata anche nella finestra di dialogo Elementi comuni, nei risultati della ricerca del menu Start e in altri elementi dell'interfaccia utente di Windows 7 che usano il controllo Visualizzatore explorer. Rispetto al controllo visualizzazione elenco, la visualizzazione Elementi offre i vantaggi seguenti agli utenti:
- 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 degli elementi può mostrare grandi set di elementi provenienti da origini dati con diverse caratteristiche di prestazione, consentendo agli utenti di esplorare e cercare l'intera raccolta di elementi da più origini.
L'immagine seguente mostra la visualizzazione Elementi in Esplora risorse di Windows.
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 la visualizzazione degli elementi supporta la virtualizzazione, mentre il controllo di visualizzazione elenco non lo fa. Inoltre, Visualizzazione Elementi usa due nuove interfacce di automazione dell'interfaccia utente per garantire che il contenuto virtualizzato fornito sia accessibile. Queste interfacce sono descritte nelle sezioni seguenti di questo argomento.
Per informazioni generali sulla virtualizzazione in Automazione interfaccia utente, vedere Uso di elementi virtualizzati.
Struttura ad albero della visualizzazione degli elementi
Nell'albero di automazione interfaccia utente l'elemento di automazione interfaccia utente principale di Items View ha il nome "ItemsView" e il tipo di controllo "list". Nell'immagine precedente l'elemento ItemsView UI Automation è evidenziato in rosso. Esistono vari elementi di automazione interfaccia utente al di sotto del livello principale di ItemsView, ma in questo documento fanno riferimento solo altri due elementi di automazione interfaccia utente: elementi di gruppo ed elementi di elenco.
Gli elementi del gruppo sono gli elementi di automazione interfaccia utente che contengono tutti gli elementi dell'elenco del gruppo. Il tipo di controllo è "Gruppo" 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 la voce di elenco "Cartella" e il relativo nome è "A-H".
Gli elementi di elenco sono gli elementi di automazione interfaccia utente che rappresentano gli elementi foglia nella visualizzazione. Il tipo di controllo è "ListItem" e i relativi nomi variano a seconda del nome dell'elemento. Nell'immagine precedente, gli elementi elenco sono gli elementi foglia, ad esempio "Folder", "Music" e "Picture". Questi tre elementi di automazione interfaccia utente vengono indicati dai termini elementi ItemsView, Elemento Group e ListItem nella parte restante di questo documento.
Virtualizzazione
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 relativa rappresentazione dell'interfaccia utente non viene creata. Questi elementi vengono chiamati elementi virtualizzati. Poiché non vengono creati, gli elementi virtualizzati non hanno elementi di automazione interfaccia utente e pertanto non vengono visualizzati nell'albero di automazione interfaccia utente quando un client di automazione interfaccia utente enumera l'albero. Inoltre, i pattern di controllo di automazione interfaccia utente operano solo su elementi visibili. Ad esempio, il pattern di controllo Selection restituisce solo gli elementi selezionati visibili quando un client chiama il metodo IUIAutomationSelectionPattern::GetCurrentSelection.
Visualizzazione elementi supporta la possibilità di recuperare le informazioni seguenti sugli elementi virtualizzati:
- Conteggio del numero totale di elementi, inclusi gli elementi virtualizzati
- Elementi di automazione interfaccia utente per elementi virtualizzati
- Elementi di automazione interfaccia utente per gli elementi virtualizzati selezionati
Ottenere il 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 consiste nel ottenere la proprietà ItemStatus dell'elemento ItemsView e la seconda consiste nel ottenere 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 è 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. Includono:
ItemCount_Property_GUID (ABBF5C45-5CCC-47b7-BB4E-87CB87BBD162): conteggio di tutti gli elementi univoci nella visualizzazione. Se viene raggruppata 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 viene raggruppata 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. I client di automazione interfaccia utente usano RegisterProperty per recuperare gli identificatori di proprietà (PROPERTYID) per le proprietà personalizzate.
Ottenere l'indice di un elemento con riferimento a tutti gli elementi
Un client può ottenere l'indice di un elemento recuperando la proprietà ItemStatus di un elemento ListItem o ottenendo 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 è 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 in base 1 di un elemento. Se viene raggruppata 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 registrata tramite il metodo IUIAutomationRegistrar::RegisterProperty. I client di automazione interfaccia utente usano RegisterProperty per recuperare un identificatore di proprietà (PROPERTYIDs) per la proprietà personalizzata.
Recupero di un riferimento a un elemento Virtualizzato
Un elemento ItemsView implementa il modello di controllo ItemContainer (interfacciaIItemContainerProvider), che consente a un client di ottenere un elemento di automazione dell'interfaccia utente per un elemento virtualizzato (un elemento esterno all'area visibile). ItemsView consente al client di trovare un elemento ListItem eseguendo una ricerca nelle proprietà Name e Selection. Il tentativo di cercare in qualsiasi altra proprietà avrà esito negativo.
Un elemento virtuale implementa solo il pattern di controllo VirtualizedItem ( interfaccia IVirtualizedItemProvider). Poiché l'elemento rappresentato da un elemento di automazione interfaccia utente virtualizzato non esiste ancora, il tentativo di ottenere qualsiasi altro pattern di controllo o proprietà dell'elemento avrà esito negativo.
Entrambi gli elementi ListItem e Group sono virtualizzati, ma solo gli elementi ListItem possono essere restituiti dal pattern di controllo ItemContainer. Poiché la chiamata al metodo IUIAutomationItemContainerPattern::FindItemByProperty viene eseguita nel thread dell'interfaccia utente e si blocca, l'interfaccia non risponde finché FindItemByProperty non ritorna, e qualsiasi altra chiamata di metodo sul provider deve attendere finché FindItemByProperty non termina. In alcuni casi, FindItemByProperty deve elaborare l'intero set di dati prima della restituzione, che può richiedere un utilizzo intensivo delle risorse. Specificare NULL come elemento iniziale fa sì che FindItemByProperty inizi 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. La ricerca non fa distinzione tra maiuscole e minuscole. I wildcard o la corrispondenza parziale non sono supportati. Se viene specificato un nome NULL, viene restituito l'elemento successivo all'elemento iniziale. Specificando nomi di NULL, un client di automazione interfaccia utente può 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 oppure FALSE per trovare il primo elemento non selezionato. Prestare attenzione durante l'enumerazione di 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 di automazione interfaccia utente per un elemento virtualizzato (fuori schermo), il client può scorrere l'elemento nella visualizzazione usando il metodo IUIAutomationVirtualizeItemPattern::Realize del pattern di controllo VirtualizedItem. Dopo aver realizzato l'elemento, è visibile e tutte le proprietà e i pattern di controllo normalmente associati a un elemento ListItem sono disponibili per il client.
Solo gli elementi ListItem ottenuti dal metodo IUIAutomationItemContainerPattern::FindItemByProperty espongono il pattern di controllo VirtualizedItem. Quando viene eseguito lo scorrimento di un elemento sullo schermo, 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 utilizzando le barre di scorrimento). Gli elementi e i gruppi vengono realizzati mentre scorrono nella visualizzazione e vengono virtualizzati quando scorrono fuori dalla visualizzazione.
Argomenti correlati