Panoramica dell'accessibilitàAccessibility overview

Questo articolo è una panoramica dei concetti e delle tecnologie correlati agli scenari di accessibilità per le app di Windows.This article is an overview of the concepts and technologies related to accessibility scenarios for Windows apps.

Accessibilità dell'appAccessibility and your app

Esistono molte possibili disabilità o menomazioni che interessano la mobilità, la vista, la percezione dei colori, l'udito, il linguaggio, l'apprendimento e l'alfabetizzazione.There are many possible disabilities or impairments, including limitations in mobility, vision, color perception, hearing, speech, cognition, and literacy. È tuttavia possibile affrontare la maggior parte delle esigenze seguendo le linee guida qui proposte.However, you can address most requirements by following the guidelines offered here. Ciò significa fornire:This means providing:

  • Supporto per le interazioni tramite tastiera e utilità per la lettura dello schermo.Support for keyboard interactions and screen readers.
  • Supporto per la personalizzazione da parte dell'utente, ad impostazioni relative a tipo di carattere, zoom (ingrandimento), colore e contrasto elevato.Support for user customization, such as font, zoom setting (magnification), color, and high-contrast settings.
  • Soluzioni alternative o integrative per alcune parti dell'interfaccia utente.Alternatives or supplements for parts of your UI.

I controlli per XAML includono il supporto predefinito della tastiera e il supporto di strumenti di assistive technology quali le utilità per la lettura dello schermo, che sfruttano i framework di accessibilità che già supportano le app UWP, il linguaggio HTML e altre tecnologie dell'interfaccia utente.Controls for XAML provide built-in keyboard support and support for assistive technologies such as screen readers, which take advantage of accessibility frameworks that already support UWP apps, HTML, and other UI technologies. Questo supporto integrato abilita un livello di accessibilità di base che potrai personalizzare con qualche semplice operazione aggiuntiva, ad esempio impostando qualche proprietà.This built-in support enables a basic level of accessibility that you can customize with very little work, by setting just a handful of properties. Quando crei componenti e controlli XAML personalizzati puoi aggiungervi un supporto analogo sfruttando il concetto di peer di automazione.If you are creating your own custom XAML components and controls, you can also add similar support to those controls by using the concept of an automation peer.

Le funzionalità di data binding, stile e modello facilitano l'implementazione del supporto per modifiche dinamiche delle impostazioni utente relative a schermo e testo per interfacce utente alternative.In addition, data binding, style, and template features make it easy to implement support for dynamic changes to display settings and text for alternative UIs.

Automazione interfaccia utenteUI Automation

Il supporto dell'accessibilità deriva principalmente dal supporto integrato per il framework di automazione interfaccia utente Microsoft.Accessibility support comes primarily from the integrated support for the Microsoft UI Automation framework. Il supporto è fornito tramite classi di base e il comportamento predefinito dell'implementazione delle classi per i tipi di controllo, nonché tramite una rappresentazione dell'interfaccia dell'API del provider di automazione interfaccia utente.That support is provided through base classes and the built-in behavior of the class implementation for control types, and an interface representation of the UI Automation provider API. Ogni classe di controllo usa i concetti di peer e pattern di automazione interfaccia utente, che dichiarano il ruolo e il contenuto del controllo ai client di automazione interfaccia utente.Each control class uses the UI Automation concepts of automation peers and automation patterns that report the control's role and content to UI Automation clients. L'app viene trattata come una finestra di primo livello da automazione interfaccia utente e, tramite il framework di automazione interfaccia utente, tutto il contenuto rilevante per l'accessibilità all'interno della finestra dell'app viene messo a disposizione di un client di automazione interfaccia utente.The app is treated as a top-level window by UI Automation, and through the UI Automation framework all the accessibility-relevant content within that app window is available to a UI Automation client. Per altre info su Automazione interfaccia utente, vedi Panoramica di Automazione interfaccia utente.For more info about UI Automation, see UI Automation Overview.

Assistive technologyAssistive technology

Molti requisiti di accessibilità sono soddisfatti dai prodotti di assistive technology installati dall'utente o dagli strumenti e dalle impostazioni del sistema operativo,Many user accessibility needs are met by assistive technology products installed by the user or by tools and settings provided by the operating system. tra cui le funzionalità per la lettura dello schermo, l'ingrandimento dello schermo e le impostazioni di contrasto elevato.This includes functionality such as screen readers, screen magnification, and high-contrast settings.

I prodotti di assistive technology includono svariati componenti software e hardware.Assistive technology products include a wide variety of software and hardware. Questi prodotti sono compatibili con l'interfaccia della tastiera standard e i framework di accessibilità che forniscono informazioni sul contenuto e la struttura di un'interfaccia utente alle utilità per la lettura dello schermo e ad altri prodotti di assistive technology.These products work through the standard keyboard interface and accessibility frameworks that report information about the content and structure of a UI to screen readers and other assistive technologies. Ecco alcuni esempi di prodotti Assistive Technology:Examples of assistive technology products include:

  • Tastiera su schermo, che permette agli utenti di usare un puntatore al posto di una tastiera per digitare il testo.The On-Screen Keyboard, which enables people to use a pointer in place of a keyboard to type text.
  • Software di riconoscimento vocale, che converte l'enunciato verbale in testo digitato.Voice-recognition software, which converts spoken words into typed text.
  • Utilità per la lettura dello schermo, che convertono il testo in enunciato verbale o in altre forme di scrittura, ad esempio Braille.Screen readers, which convert text into spoken words or other forms such as Braille.
  • Utilità per la lettura dello schermo Assistente vocale, che fa specificamente parte di Windows.The Narrator screen reader, which is specifically part of Windows. L'Assistente vocale dispone di una modalità tocco che può eseguire attività di lettura dello schermo elaborando i movimenti tocco quando non è disponibile una tastiera.Narrator has a touch mode, which can perform screen reading tasks by processing touch gestures, for when there is no keyboard available.
  • Programmi o impostazioni che regolano la visualizzazione o determinate aree della visualizzazione, ad esempio i temi a contrasto elevato, le impostazioni DPI (punti per pollice) dello schermo o lo strumento Lente di ingrandimento.Programs or settings that adjust the display or areas of it, for example high contrast themes, dots per inch (dpi) settings of the display, or the Magnifier tool.

Le app dotate di supporto adeguato per la tastiera e per le utilità di lettura dello schermo funzionano generalmente bene con diversi prodotti di assistive technology.Apps that have good keyboard and screen reader support usually work well with various assistive technology products. In molti casi un'app UWP funzionerà con questi prodotti senza richiedere ulteriori modifiche alle informazioni o alla struttura.In many cases, a UWP app works with these products without additional modification of information or structure. Potresti tuttavia voler modificare alcune impostazioni per ottimizzare l'esperienza di accessibilità o implementare supporto aggiuntivo.However, you may want to modify some settings for optimal accessibility experience or to implement additional support.

Alcune delle opzioni che puoi usare per testare gli scenari di accessibilità di base con prodotti di assistive technology sono elencate in Test di accessibilità.Some of the options that you can use for testing basic accessibility scenarios with assistive technologies are listed in Accessibility testing.

Supporto delle utilità per la lettura dello schermo e informazioni di accessibilità di baseScreen reader support and basic accessibility information

Le utilità per la lettura dello schermo permettono di accedere al testo di un'app convertendolo in un altro formato, ad esempio in un enunciato verbale o in Braille.Screen readers provide access to the text in an app by rendering it in some other format, such as spoken language or Braille output. L'esatto comportamento di una utilità per la lettura dello schermo dipende dal software e dal modo in cui l'utente lo ha configurato.The exact behavior of a screen reader depends on the software and on the user's configuration of it.

Alcune utilità per la lettura dello schermo, ad esempio, leggono l'intera interfaccia utente dell'app quando l'utente avvia l'app o accede a un'app visualizzata. In questo modo, l'utente riceve tutto il contenuto informativo disponibile prima di provare a esplorarlo.For example, some screen readers read the entire app UI when the user starts or switches to the app being viewed, which enables the user to receive all of the available informational content before attempting to navigate it. Alcune utilità per la lettura dello schermo leggono anche il testo associato a un singolo controllo quando questo riceve lo stato attivo per l'input durante gli spostamenti tramite tabulazione.Some screen readers also read the text associated with an individual control when it receives focus during tab navigation. In tal modo l'utente può orientarsi meglio mentre esplora i controlli di input di un'applicazione.This enables users to orient themselves as they navigate among the input controls of an application. L'Assistente vocale è un esempio di utilità per la lettura dello schermo in cui sono disponibili entrambi questi comportamenti, a seconda della scelta dell'utente.Narrator is an example of a screen reader that provides both behaviors, depending on user choice.

L’informazione più importante che permette alle utilità per la lettura dello schermo o a qualsiasi altro strumento di assistive technology di aiutare gli utenti a comprendere un’app o a spostarsi al suo interno è un nome accessibile per gli elementi dell’app.The most important information that a screen reader or any other assistive technology needs in order to help users understand or navigate an app is an accessible name for the element parts of the app. In molti casi, controlli ed elementi hanno già un nome accessibile, che viene calcolato in base ai valori di altre proprietà che hai fornito in altro modo.In many cases, a control or element already has an accessible name that is calculated from other property values that you have otherwise provided. Il caso più comune in cui puoi usare un nome già calcolato è quello di un elemento che supporta e visualizza testo interno.The most common case in which you can use an already-calculated name is with an element that supports and displays inner text. Per altri elementi è talvolta necessario trovare modi diversi per fornire un nome accessibile seguendo le procedure consigliate per la struttura degli elementi.For other elements, you sometimes need to account for other ways to provide an accessible name by following best practices for element structure. A volte dovrai fornire un nome che venga esplicitamente inteso come nome accessibile ai fini dell'accessibilità dell'app.And sometimes you need to provide a name that is explicitly intended as the accessible name for app accessibility. Per un elenco dei valori calcolati che funzionano negli elementi di interfaccia utente comuni, e per altre info sui nomi accessibili in generale, vedi Informazioni di accessibilità di base.For a listing of how many of these calculated values work in common UI elements, and for more info about accessible names in general, see Basic accessibility information.

Esistono molte altre proprietà di automazione, tra cui le proprietà della tastiera descritte nella prossima sezione.There are several other automation properties available (including the keyboard properties described in the next section). Tuttavia non tutte le utilità per la lettura dello schermo supportano tutte le proprietà di automazione.However, not all screen readers support all automation properties. In generale dovresti impostare tutte le proprietà di automazione appropriate ed effettuare un test per assicurarti di fornire il più ampio supporto possibile per le utilità per la lettura dello schermo.In general, you should set all appropriate automation properties and test to provide the widest possible support for screen readers.

Supporto per la tastieraKeyboard support

Per assicurare un supporto per tastiera adeguato, devi assicurarti che ogni parte della tua applicazione possa essere usata con una tastiera.To provide good keyboard support, you must ensure that every part of your application can be used with a keyboard. Se la tua app usa principalmente controlli standard e non usa controlli personalizzati, sei già a buon punto.If your app uses mostly the standard controls and doesn't use any custom controls, you are most of the way there already. Nel modello di controllo XAML di base è incluso il supporto per tastiera predefinito, che comprende l'esplorazione con il tasto di tabulazione, l'input di testo e il supporto per controlli specifici.The basic XAML control model provides built-in keyboard support including tab navigation, text input, and control-specific support. Gli elementi che fungono da contenitori di layout, ad esempio i pannelli, usano l'ordine di layout per stabilire un ordine di tabulazione predefinito.The elements that serve as layout containers (such as panels) use the layout order to establish a default tab order. Spesso si tratta dell'ordine di tabulazione corretto da usare per una rappresentazione accessibile dell'interfaccia utente.That order is often the correct tab order to use for an accessible representation of the UI. Se si usano i controlli ListBox e GridView per visualizzare i dati, essi forniscono la navigazione integrata con il tasto di direzione.If you use ListBox and GridView controls to display data, they provide built-in arrow-key navigation. In alternativa, se si usa un controllo Button , viene già gestita la barra spaziatrice o si immettono i tasti per l'attivazione del pulsante.Or if you use a Button control, it already handles the Spacebar or Enter keys for button activation.

Per altre info su tutti gli aspetti del supporto per tastiera, incluso l’ordine di tabulazione e l’attivazione o lo spostamento mediante tasti, vedi Accessibilità tramite tastiera.For more info about all the aspects of keyboard support, including tab order and key-based activation or navigation, see Keyboard accessibility.

Elementi multimediali e didascalieMedia and captioning

In genere i supporti audiovisivi vengono visualizzati tramite un oggetto MediaElement .You typically display audiovisual media through a MediaElement object. Puoi usare le API MediaElement per controllare la riproduzione di contenuti multimediali.You can use MediaElement APIs to control the media playback. Ai fini dell'accessibilità, fornisci controlli che permettano all'utente di eseguire, sospendere e arrestare la riproduzione dei contenuti multimediali in base alle esigenze.For accessibility purposes, provide controls that enable users to play, pause, and stop the media as needed. Talvolta, gli elementi multimediali includono componenti aggiuntivi destinati all'accessibilità, ad esempio sottotitoli o tracce audio alternative con descrizioni narrative.Sometimes, media includes additional components that are intended for accessibility, such as captioning or alternative audio tracks that include narrative descriptions.

Testo accessibileAccessible text

Tre aspetti principali relativi al testo sono rilevanti per l'accessibilità:Three main aspects of text are relevant to accessibility:

  • Gli strumenti devono determinare se il testo deve essere letto nell'ambito dell'attraversamento di una sequenza di tabulazioni o solo come parte della rappresentazione complessiva di un documento.Tools must determine whether the text is to be read as part of a tab-sequence traversal or only as part of an overall document representation. Puoi agevolare questa verifica scegliendo l'elemento appropriato per la visualizzazione del testo o regolando le proprietà degli elementi di testo in questione.You can help control this determination by choosing the appropriate element for displaying the text or by adjusting properties of those text elements. Ogni elemento di testo disponibile ha uno scopo specifico, a cui spesso corrisponde un ruolo di automazione interfaccia utente.Each text element has a specific purpose, and that purpose often has a corresponding UI Automation role. Usare l'elemento sbagliato può comportare la segnalazione del ruolo sbagliato ad automazione interfaccia utente e quindi la creazione di un'esperienza che disorienterà l'utente di uno strumento di assistive technology.Using the wrong element can result in reporting the wrong role to UI Automation and creating a confusing experience for an assistive technology user.
  • Molti utenti soffrono di disturbi della vista che rendono difficile la lettura a meno che il testo sia adeguatamente contrastato rispetto allo sfondo.Many users have sight limitations that make it difficult for them to read text unless it has adequate contrast against the background. L'effetto che ciò produce sugli utenti non è intuitivo per i progettisti di app che non hanno lo stesso problema.How this impacts the user is not intuitive for app designers who do not have that sight limitation. La scelta di colori inadatti in fase di progettazione può ad esempio impedire agli utenti daltonici di riuscire a leggere il testo.For example, for color-blind users, poor color choices in the design can prevent some users from being able to read the text. Nelle raccomandazioni per l'accessibilità originariamente concepite per i contenuti Web sono definiti standard relativi al contrasto che consentono di evitare questi problemi anche nelle app.Accessibility recommendations that were originally made for web content define standards for contrast that can avoid these problems in apps as well. Per altre info, vedi Requisiti per il testo accessibile.For more info, see Accessible text requirements.
  • Molti utenti hanno difficoltà a leggere il testo semplicemente perché è troppo piccolo.Many users have difficulty reading text that is simply too small. Puoi evitare il problema in primo luogo rendendo ragionevolmente grande il testo dell'interfaccia utente della tua app.You can prevent this issue by making the text in your app's UI reasonably large in the first place. Questo può essere tuttavia problematico per le app che visualizzano grandi quantità di testo oppure testo intercalato con altri elementi visivi.However, that's challenging for apps that display large quantities of text, or text interspersed with other visual elements. In questi casi verifica che l'app interagisca correttamente con le funzionalità di sistema per l'ingrandimento dello schermo, in modo che qualsiasi testo nelle app venga ingrandito corrispondentemente.In such cases, make sure that the app correctly interacts with the system features that can scale up the display, so that any text in apps scales up along with it. Alcuni utenti modificano i valori DPI come opzione di accessibilità,(Some users change dpi values as an accessibility option. disponibile da Ingrandimento degli elementi sullo schermo in Accessibilità, che reindirizza a un'interfaccia utente del Pannello di controllo per Aspetto e personalizzazione / Schermo.That option is available from Make things on the screen larger in Ease of Access, which redirects to a Control Panel UI for Appearance and Personalization / Display.)

Supporto di temi a contrasto elevatoSupporting high-contrast themes

I controlli dell'interfaccia utente usano una rappresentazione visiva definita nell'ambito del dizionario dei temi di una risorsa XAML.UI controls use a visual representation that is defined as part of a XAML resource dictionary of themes. Alcuni di questi temi sono espressamente concepiti per essere usati quando il sistema è impostato per il contrasto elevato.One or more of these themes is specifically used when the system is set for high contrast. Quando l'utente passa al contrasto elevato, cercando dinamicamente il tema appropriato in un dizionario di risorse, verrà usato un tema a contrasto elevato appropriato anche per tutti i controlli dell'interfaccia utente.When the user switches to high contrast, by looking up the appropriate theme from a resource dictionary dynamically, all your UI controls will use an appropriate high-contrast theme too. Verifica soltanto di non avere disabilitato i temi specificando uno stile esplicito o usando un'altra tecnica per l'applicazione di stili che impedisca il caricamento dei temi a contrasto elevato e la sostituzione delle modifiche apportate agli stili.Just make sure that you haven't disabled the themes by specifying an explicit style or using another styling technique that prevents the high-contrast themes from loading and overriding your style changes. Per altre info, vedi Temi a contrasto elevato.For more info, see High-contrast themes.

Prevedere interfacce utente alternative in fase di progettazioneDesign for alternative UI

Quando progetti le tue app, pensa a come potranno essere usate da persone con problemi di mobilità, vista e udito.When you design your apps, consider how they may be used by people with limited mobility, vision, and hearing. Poiché i prodotti di assistive technology fanno un uso intensivo dell'interfaccia utente standard, è particolarmente importante prevedere un supporto adeguato della tastiera e delle utilità per la lettura dello schermo, anche se non apporti altre modifiche per l'accessibilità.Because assistive technology products make extensive use of standard UI, it is particularly important to provide good keyboard and screen-reader support even if you make no other adjustments for accessibility.

In molti casi puoi veicolare informazioni essenziali usando varie tecniche per raggiungere un numero maggiore di potenziali utenti.In many cases, you can convey essential information by using multiple techniques to widen your audience. Ad esempio, per evidenziare un'informazione puoi usare sia un'icona che un colore, in modo da aiutare gli utenti daltonici; e puoi visualizzare un allarme visivo insieme a un effetto sonoro, per aiutare gli utenti con problemi di udito.For example, you can highlight information using both icon and color information to help users who are color blind, and you can display visual alerts along with sound effects to help users who are hearing impaired.

Se necessario puoi fornire elementi dell'interfaccia utente alternativi e accessibili che rimuovano del tutto gli elementi e le animazioni non essenziali; o puoi apportare altre semplificazioni che agevolino l'esperienza utente.If necessary, you can provide alternative, accessible user interface elements that completely remove nonessential elements and animations, and provide other simplifications to streamline the user experience. Nell'esempio di codice riportato di seguito viene illustrato come visualizzare un'istanza di UserControl al posto di un'altra a seconda di un'impostazione utente.The following code example demonstrates how to display one UserControl instance in place of another depending on a user setting.

XAMLXAML

<StackPanel x:Name="LayoutRoot" Background="White">

  <CheckBox x:Name="ShowAccessibleUICheckBox" Click="ShowAccessibleUICheckBox_Click">
    Show Accessible UI
  </CheckBox>

  <UserControl x:Name="ContentBlock">
    <local:ContentPage/>
  </UserControl>

</StackPanel>

Visual BasicVisual Basic

Private Sub ShowAccessibleUICheckBox_Click(ByVal sender As Object,
    ByVal e As RoutedEventArgs)

    If (ShowAccessibleUICheckBox.IsChecked.Value) Then
        ContentBlock.Content = New AccessibleContentPage()
    Else
        ContentBlock.Content = New ContentPage()
    End If
End Sub

C#C#

private void ShowAccessibleUICheckBox_Click(object sender, RoutedEventArgs e)
{
    if ((sender as CheckBox).IsChecked.Value)
    {
        ContentBlock.Content = new AccessibleContentPage();
    }
    else
    {
        ContentBlock.Content = new ContentPage();
    }
}

Verifica e pubblicazioneVerification and publishing

Per altre info sulle dichiarazioni di accessibilità e la pubblicazione della tua app, vedi Accessibilità in Windows Store.For more info about accessibility declarations and publishing your app, see Accessibility in the Store.

Nota

La dichiarazione dell'app come accessibile è pertinente solo per la Microsoft Store.Declaring the app as accessible is only relevant to the Microsoft Store.

Supporto dei prodotti di assistive technology in controlli personalizzatiAssistive technology support in custom controls

Quando si crea un controllo personalizzato, è consigliabile implementare o estendere anche una o più sottoclassi AutomationPeer per fornire supporto per l'accessibilità.When you create a custom control, we recommend that you also implement or extend one or more AutomationPeer subclasses to provide accessibility support. In alcuni casi, finché usi la stessa classe peer utilizzata dalla classe dei controlli di base, il supporto dell'automazione per la classe derivata è adeguato a un livello base.In some cases, so long as you use the same peer class as was used by the base control class, the automation support for your derived class is adequate at a basic level. Questo aspetto deve essere tuttavia verificato. L'implementazione di un peer è comunque consigliata come best practice, di modo che il peer possa dichiarare correttamente il nome della nuova classe di controlli.However, you should test this, and implementing a peer is still recommended as a best practice so that the peer can correctly report the class name of your new control class. L'implementazione di un peer di automazione personalizzato richiede alcuni passaggi.Implementing a custom automation peer has a few steps involved. Per altre info, vedi Peer di automazione personalizzati.For more info, see Custom automation peers.

Supporto dei prodotti di assistive technology in app che supportano l'interoperabilità XAML/Microsoft DirectXAssistive technology support in apps that support XAML / Microsoft DirectX interop

Il contenuto DirectX ospitato in un’interfaccia utente XAML (tramite SwapChainPanel o SurfaceImageSource) non è accessibile per impostazione predefinita.Microsoft DirectX content that's hosted in a XAML UI (using SwapChainPanel or SurfaceImageSource) is not accessible by default. L’esempio di interoperabilità tra DirectX e SwapChainPanel in XAML mostra come creare peer di Automazione interfaccia utente per il contenuto DirectX ospitato.The XAML SwapChainPanel DirectX interop sample shows how to create UI Automation peers for the hosted DirectX content. Con questa tecnica è possibile accedere al contenuto ospitato tramite Automazione interfaccia utente.This technique makes the hosted content accessible through UI Automation.