Windows Dev Center

Esposizione delle informazioni di base sugli elementi dell'interfaccia utente (XAML)

Stai cercando la versione di questo argomento relativa a HTML/JavaScript? Vedi Esposizione delle informazioni di base sugli elementi dell'interfaccia utente (HTML).

Gli strumenti di assistive technology, ad esempio le utilità per la lettura dello schermo, necessitano di informazioni sugli elementi dell'interfaccia utente presenti in un'app. Il sistema fornisce le informazioni in base alla rappresentazione di un'app nel framework di automazione interfaccia utente di Microsoft. Le informazioni di accessibilità di base sono a volte classificate per nome, ruolo e valore. Questo argomento descrive il codice XAML o di altro tipo per consentire l'esposizione nell'app delle informazioni di base necessarie per Assistive Technology.

Nome accessibile

Un nome accessibile è una stringa di testo descrittiva breve usata da un'utilità per la lettura dello schermo per annunciare un elemento dell'interfaccia utente. Imposta il nome accessibile per gli elementi dell'interfaccia utente che hanno un significato importante per la comprensione del contenuto o per l'interazione con l'interfaccia utente. In genere questi elementi includono immagini, campi di input, pulsanti, controlli e aree.

Questa tabella descrive come definire o ottenere un nome accessibile per vari tipi di elementi di un'interfaccia utente XAML.

Tipo di elementoDescrizione
Testo staticoPer gli elementi TextBlock e RichTextBlock, il nome accessibile viene automaticamente determinato dal testo visibile (interno). Tutto il testo dell'elemento viene usato come nome. Vedi Nome da testo interno.
ImmaginiL'elemento XAML Image non ha una controparte diretta per l'attributo HTML alt di img e di elementi simili. Per fornire un nome, usa AutomationProperties.Name oppure la tecnica dell'applicazione di didascalie. Vedi Nomi accessibili per le immagini.
Elementi di modulo Il nome accessibile per un elemento di modulo deve essere identico all'etichetta visualizzata per l'elemento. Vedi Etichette e LabeledBy.
Pulsanti e link Per impostazione predefinita, il nome accessibile di un pulsante o di un link è basato sul testo visibile, con le stesse regole descritte in Nome da testo interno. Nei casi i cui un pulsante contenga solo un'immagine, usa AutomationProperties.Name per fornire un equivalente di solo testo dell'azione prevista del pulsante.

 

La maggior parte degli elementi contenitore, ad esempio i riquadri, non promuove il proprio contenuto come nome accessibile. Infatti, è il contenuto dell'elemento, non il contenitore, che deve segnalare un nome e un ruolo corrispondente. L'elemento del contenitore può indicare che si tratta di un elemento con elementi figlio in una rappresentazione di automazione interfaccia utente, in modo tale che la logica di Assistive Technology possa attraversarlo. Ma gli utenti di Assistive Technology non devono necessariamente essere informati sui contenitori e pertanto la maggior parte dei contenitori non ha nome.

Ruolo e valore

I controlli e altri elementi dell'interfaccia utente che fanno parte del vocabolario XAML di Windows Runtime implementano il supporto di automazione interfaccia utente per segnalare il ruolo e il valore come parte delle relative definizioni. Puoi usare gli strumenti di automazione interfaccia utente per esaminare le informazioni su ruolo e valore per i controlli di Windows Runtime oppure leggere la documentazione per le implementazioni di AutomationPeer di ogni controllo. I ruoli disponibili nel framework di automazione interfaccia utente sono definiti nell'enumerazione AutomationControlType. I client di automazione interfaccia utente, ad esempio i prodotti di assistive technology, possono ottenere le informazioni relative ai ruoli chiamando i metodi esposti dal framework di automazione interfaccia utente mediante AutomationPeer del controllo.

Non tutti i controlli hanno un valore. I controlli che non hanno un valore segnalano questa informazione all'automazione interfaccia utente tramite i peer e i criteri supportati dal controllo. Ad esempio, un elemento del modulo TextBox non ha un valore. Un prodotto di assistive technology può essere un client di automazione interfaccia utente e individuare che esiste un valore e a cosa corrisponde. In questo caso specifico TextBox supporta il pattern IValueProvider mediante le definizioni di TextBoxAutomationPeer.

Nota  Se usi AutomationProperties.Name o altre tecniche per fornire il nome accessibile in modo esplicito, non includere lo stesso testo usato dalle informazioni sul tipo o sul ruolo del controllo nel nome accessibile. Ad esempio, non includere stringhe come "pulsante" o "elenco" nel nome. Le informazioni su ruolo e tipo derivano da una proprietà diversa di automazione interfaccia utente (LocalizedControlType) fornita dal supporto predefinito del controllo per l'automazione interfaccia utente. Molti prodotti di assistive technology aggiungono LocalizedControlType alla fine del nome accessibile, per cui la duplicazione del ruolo all'interno del nome può risultare in un'inutile ripetizione di parole. Ad esempio, se assegni a un controllo Button il nome accessibile "pulsante" o se includi "pulsante" come ultima parte del nome, le utilità per la lettura dello schermo potrebbero leggerlo come "pulsante pulsante". Questo aspetto delle informazioni per l'accessibilità deve essere verificato tramite l'Assistente vocale.

Effetti sulle visualizzazioni albero di automazione interfaccia utente

Il framework di automazione interfaccia utente è composto da tre visualizzazioni albero in cui i client di automazione interfaccia utente possono recuperare le relazioni tra gli elementi di un'interfaccia utente mediante tre possibili visualizzazioni: non elaborata, controllo e contenuto. La visualizzazione controllo viene spesso usata dai client di automazione interfaccia utente poiché offre una rappresentazione e un'organizzazione ottimale degli elementi interattivi in un'interfaccia utente. Gli strumenti di test consentono in genere di scegliere quale visualizzazione albero usare per la presentazione dell'organizzazione degli elementi.

Per impostazione predefinita, qualsiasi classe derivata di Control e pochi altri elementi vengono visualizzati nella visualizzazione controllo quando il framework di automazione interfaccia utente rappresenta l'interfaccia utente per un'app di Windows Runtime scritta in C++, C# o Visual Basic. Talvolta, però, è preferibile che un elemento non venga visualizzato nella visualizzazione controllo per via della composizione dell'interfaccia utente, nel caso l'elemento duplichi informazioni o presenti informazioni irrilevanti per gli scenari di accessibilità. Usa la proprietà associata AutomationProperties.AccessibilityView per modificare la modalità di esposizione degli elementi nelle visualizzazioni albero. Se inserisci un elemento nell'albero Raw, la maggior parte dei prodotti di assistive technology non segnalerà tale elemento come parte delle loro visualizzazioni. Per vedere alcuni esempi di questo funzionamento nei controlli esistenti, apri il file XAML di riferimento per la progettazione generic.xaml in un editor di testo e cerca AutomationProperties.AccessibilityView nei modelli.

Nome da testo interno

Per semplificare l'uso di stringhe che esistono già nell'interfaccia utente visibile per i valori dei nomi accessibili, molti controlli e altri elementi dell'interfaccia utente forniscono il supporto per la specifica automatica di un nome accessibile predefinito in base al testo interno dell'elemento o da valori stringa delle proprietà di contenuto.

  • TextBlock, RichTextBlock, TextBox e RichTextBlock promuovono il valore della proprietà Text come nome accessibile predefinito.
  • Tutte le sottoclassi ContentControl usano una tecnica "ToString" iterativa per trovare stringhe nel relativo valore Content e promuovono queste stringhe come nome accessibile predefinito.
Nota   Così come viene applicato dall'automazione interfaccia utente, il nome accessibile può essere composto al massimo da 2048 caratteri. Se una stringa usata per la specifica automatica del nome accessibile supera questo limite, il nome accessibile viene troncato corrispondentemente.

Nomi accessibili per le immagini

Per supportare le utilità per la lettura dello schermo e fornire le informazioni di identificazione di base per ogni elemento dell'interfaccia utente, a volte è necessario fornire alternative di testo alle informazioni non di testo come immagini e grafici, ad eccezione di elementi puramente decorativi o strutturali. Questi elementi non hanno testo interno, quindi il nome accessibile non avrà un valore calcolato. Puoi impostare il nome accessibile direttamente impostando la proprietà associata AutomationProperties.Name, come mostrato nell'esempio seguente:


<Image Source="product.png"
  AutomationProperties.Name="An image of a customer using the product."/>

In alternativa, prova a includere una didascalia di testo che appare nell'interfaccia utente visibile e funge anche da informazione di accessibilità associata all'etichetta per il contenuto dell'immagine. Ecco un esempio:


<Image HorizontalAlignment="Left" Width="480" x:Name="img_MyPix"
  Source="snoqualmie-NF.jpg"
  AutomationProperties.LabeledBy="{Binding ElementName=caption_MyPix}"/>
<TextBlock x:Name="caption_MyPix">
Mount Snoqualmie Skiing
</TextBlock>

Etichette e LabeledBy

Per associare un'etichetta a un elemento di modulo, è consigliabile usare TextBlock con x:Name per il testo e quindi impostare la proprietà associata AutomationProperties.LabeledBy nell'elemento del modulo per fare riferimento all'etichetta TextBlock in base al relativo nome XAML. Se usi questo criterio, quando l'utente fa clic sull'etichetta, lo stato attivo passa sul controllo associato e le applicazioni di Assistive Technology possono usare il testo dell'etichetta come nome accessibile per il campo del modulo. Ecco un esempio di questa tecnica.


 <StackPanel x:Name="LayoutRoot" Background="White">
   <StackPanel Orientation="Horizontal">
     <TextBlock Name="lbl_FirstName">First name</TextBlock>
     <TextBox
      AutomationProperties.LabeledBy="{Binding ElementName=lbl_FirstName}"
      Name="tbFirstName" Width="100"/>
   </StackPanel>
   <StackPanel Orientation="Horizontal">
     <TextBlock Name="lbl_LastName">Last name</TextBlock>
     <TextBox
      AutomationProperties.LabeledBy="{Binding ElementName=lbl_LastName}"
      Name="tbLastName" Width="100"/>
   </StackPanel>
 </StackPanel>

Descrizione accessibile (facoltativa)

La descrizione accessibile offre altre informazioni di accessibilità su un particolare elemento dell'interfaccia utente. Fornisci una descrizione accessibile quando il solo nome accessibile non esprime in maniera adeguata lo scopo di un elemento.

L'utilità per la lettura dello schermo Assistente vocale legge la descrizione accessibile di un elemento solo quando l'utente richiede altre informazioni sull'elemento premendo BLOC MAIUSC + F.

Lo scopo del nome accessibile è identificare il controllo e non documentarne completamente il comportamento. Se non basta una breve descrizione a spiegare il controllo, puoi impostare la proprietà associata AutomationProperties.HelpText, oltre a AutomationProperties.Name.

Test dell'accessibilità immediati e frequenti

In definitiva, l'approccio migliore per supportare le utilità per la lettura dello schermo consiste nell'eseguire i test sull'app direttamente con un'utilità di questo tipo. In questo modo potrai verificare il comportamento dell'utilità e le eventuali informazioni di accessibilità di base mancanti nell'app. Potrai così correggere i valori delle proprietà relative all'interfaccia utente o all'automazione interfaccia utente. Per altre info, vedi Test di accessibilità dell'app.

Uno degli strumenti che puoi usare per testare l'accessibilità è AccScope. Lo strumento AccScope è particolarmente utile poiché consente di visualizzare le rappresentazioni visive dell'interfaccia utente che riflettono il modo in cui gli strumenti di Assistive Technology possono visualizzare l'app come albero di automazione. Nello specifico, una modalità Assistente vocale rappresenta il modo in cui l'Assistente vocale acquisisce il testo dell'app e o organizza gli elementi nell'interfaccia utente. AccScope è progettato in modo da poter essere usato durante l'intero ciclo di sviluppo di un'app, anche nella fase di progettazione preliminare. Per altre informazioni, vedi AccScope.

Nomi accessibili da dati dinamici

Windows Runtime supporta molti controlli che è possibile usare per visualizzare i valori provenienti da un'origine dati associata, tramite una funzionalità nota come associazione dati. Quando popoli elenchi con elementi dati, può essere necessario usare una tecnica che imposta i nomi accessibili per le voci dell'elenco associati a dati dopo il popolamento dell'elenco iniziale. Per altre informazioni, vedi la sezione "Scenario 4" nell'Esempio di accessibilità XAML.

Nomi accessibili e localizzazione

Per fare in modo che il nome accessibile sia anche un elemento localizzato, ti consigliamo di usare le tecniche corrette per archiviare le stringhe localizzabili come risorse e quindi fare riferimento alle connessioni delle risorse con valori x:Uid. Se il nome accessibile deriva da un utilizzo di AutomationProperties.Name impostato in modo esplicito, assicurati che anche la stringa contenuta al suo interno sia localizzabile.

Le proprietà associate, ad esempio le proprietà AutomationProperties, usano una speciale sintassi di qualificazione per il nome della risorsa, in modo che quest'ultima faccia riferimento alla proprietà associata applicata a un elemento specifico. Ad esempio il nome della risorsa per AutomationProperties.Name applicato a un elemento dell'interfaccia utente denominato MediumButton è: MediumButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name. Per altre info, vedi Guida introduttiva: Traduzione delle risorse dell'interfaccia utente.

Argomenti correlati

AutomationProperties.Name
Esempio di accessibilità XAML
Test dell'accessibilità dell'applicazione

 

 

Mostra:
© 2015 Microsoft