Présenter des informations d’accessibilité élémentairesExpose basic accessibility information

Les informations d’accessibilité élémentaires sont souvent classées en trois catégories : nom, rôle et valeur.Basic accessibility info is often categorized into name, role, and value. Cette rubrique décrit le code qui aide votre application à exposer les informations de base nécessaires aux technologies d’assistance.This topic describes code to help your app expose the basic information that assistive technologies need.

Nom accessibleAccessible name

Le nom accessible est une chaîne de texte courte et descriptive qui est utilisée par les lecteurs d’écran pour présenter un élément d’interface utilisateur.An accessible name is a short, descriptive text string that a screen reader uses to announce a UI element. Définissez le nom accessible des éléments d’interface utilisateur dont la signification est importante pour comprendre le contenu ou interagir avec l’interface utilisateur.Set the accessible name for UI elements so that have a meaning that is important for understanding the content or interacting with the UI. Ces éléments incluent généralement les images, les champs d’entrée, les boutons, les contrôles et les régions.Such elements typically include images, input fields, buttons, controls, and regions.

Le tableau suivant décrit comment définir ou obtenir un nom accessible pour différents types d’éléments dans une interface utilisateur XAML.This table describes how to define or obtain an accessible name for various types of elements in a XAML UI.

Type d'élémentElement type DescriptionDescription
Texte statiqueStatic text Pour les éléments TextBlock et RichTextBlock, un nom accessible est déterminé automatiquement à partir du texte visible (interne).For TextBlock and RichTextBlock elements, an accessible name is automatically determined from the visible (inner) text. Tout le texte dans cet élément est utilisé comme nom.All of the text in that element is used as the name. Voir Nom du texte interne.See Name from inner text.
ImagesImages L’élément Image XAML n’a pas d’analogue direct pour l’attribut HTML alt de type img et éléments similaires.The XAML Image element does not have a direct analog to the HTML alt attribute of img and similar elements. Vous devez utiliser AutomationProperties.Name pour fournir un nom ou utiliser la technique de légendage.Either use AutomationProperties.Name to provide a name, or use the captioning technique. Voir Noms accessibles pour les images.See Accessible names for images.
Éléments du formulaireForm elements Le nom accessible pour un élément de formulaire doit être identique à l’étiquette affichée pour cet élément.The accessible name for a form element should be the same as the label that is displayed for that element. Voir Étiquettes et LabeledBy.See Labels and LabeledBy.
Boutons et liensButtons and links Par défaut, le nom accessible d’un bouton ou d’un lien est basé sur le texte visible, les mêmes règles que celles décrites dans Nom du texte interne étant appliquées.By default, the accessible name of a button or link is based on the visible text, using the same rules as described in Name from inner text. Dans les cas où un bouton contient uniquement une image, utilisez AutomationProperties.Name pour fournir un équivalent texte-uniquement de l’action prévue du bouton.In cases where a button contains only an image, use AutomationProperties.Name to provide a text-only equivalent of the button's intended action.

La plupart des éléments de conteneur tels que les panneaux n’effectuent pas la promotion de leur contenu comme nom accessible,Most container elements such as panels do not promote their content as accessible name. car c’est le contenu de l’élément qui doit indiquer un nom et un rôle correspondant, et non son conteneur.This is because it is the item content that should report a name and corresponding role, not its container. L’élément conteneur peut indiquer qu’il s’agit d’un élément ayant des enfants dans une représentation Microsoft UI Automation, de telle sorte que la logique de technologie d’assistance puisse le traverser.The container element might report that it is an element that has children in a Microsoft UI Automation representation, such that the assistive technology logic can traverse it. Toutefois, les informations sur les conteneurs ne sont généralement pas utiles aux utilisateurs de technologies d’assistance et la plupart des conteneurs ne sont pas nommés.But users of assistive technologies don't generally need to know about the containers and thus most containers aren't named.

Rôle et valeurRole and value

Les contrôles et autres éléments d’interface utilisateur qui font partie du vocabulaire XAML mettent en œuvre la prise en charge d’UI Automation pour signaler les rôles et les valeurs dans le cadre de leurs définitions.The controls and other UI elements that are part of the XAML vocabulary implement UI Automation support for reporting role and value as part of their definitions. Vous pouvez utiliser des outils UI Automation pour examiner les informations sur les rôles et les valeurs pour les contrôles, ou vous pouvez lire la documentation relative aux implémentations AutomationPeer de chaque contrôle.You can use UI Automation tools to examine the role and value information for the controls, or you can read the documentation for the AutomationPeer implementations of each control. Les rôles disponibles dans une infrastructure UI Automation sont définis dans l’énumération AutomationControlType.The available roles in a UI Automation framework are defined in the AutomationControlType enumeration. Les clients UI Automation tels que les technologies d’assistance peuvent obtenir des informations sur les rôles en appelant les méthodes que l’infrastructure UI Automation expose à partir de l’élément AutomationPeer du contrôle.UI Automation clients such as assistive technologies can obtain role information by calling methods that the UI Automation framework exposes by using the control's AutomationPeer .

Les contrôles n’ont pas tous une valeur.Not all controls have a value. Ceux qui en ont une signalent ces informations à UI Automation par le biais des homologues et modèles qui sont pris en charge par ce contrôle.Controls that do have a value report this information to UI Automation through the peers and patterns that are supported by that control. Par exemple, un élément de formulaire de zone de texte a une valeur.For example, a TextBox form element does have a value. Une technologie d’assistance peut être un client UI Automation et découvrir par conséquent qu’il existe une valeur et quelle est cette valeur.An assistive technology can be a UI Automation client and can discover both that a value exists and what the value is. Dans ce cas particulier, TextBox prend en charge le modèle IValueProvider via les définitions TextBoxAutomationPeer.In this specific case the TextBox supports the IValueProvider pattern through the TextBoxAutomationPeer definitions.

Notes

Dans les cas où vous utilisez AutomationProperties.Name ou d’autres techniques pour fournir explicitement le nom accessible, n’incluez pas le même texte que celui utilisé par le rôle de contrôle ou les informations de type dans le nom accessible.For cases where you use AutomationProperties.Name or other techniques to supply the accessible name explicitly, do not include the same text as is used by the control role or type information in the accessible name. Par exemple, n’incluez pas des chaînes telles que « bouton » ou « liste » dans le nom.For example do not include strings such as "button" or "list" in the name. Les informations de type et de rôle proviennent d’une propriété UI Automation différente ( LocalizedControlType ) qui est fournie par la prise en charge du contrôle par défaut pour UI Automation.The role and type information comes from a different UI Automation property ( LocalizedControlType ) that is supplied by the default control support for UI Automation. De nombreuses technologies d’assistance ajoutent l’élément LocalizedControlType au nom accessible. Le fait de dupliquer le rôle dans le nom accessible peut donc provoquer une répétition de mots inutile.Many assistive technologies append the LocalizedControlType to the accessible name, so duplicating the role in the accessible name can result in unnecessarily repeated words. Par exemple, si vous attribuez à un contrôle Button le nom accessible « bouton » ou incluez « bouton » à la fin du nom, les lecteurs d’écran risquent de lire « bouton bouton ».For example, if you give a Button control an accessible name of "button" or include "button" as the last part of the name, this might be read by screen readers as "button button". Nous vous conseillons de tester cet aspect de votre accessibilité à l’aide du Narrateur.You should test this aspect of your accessibility info using Narrator.

Influence sur les vues de l’arborescence UI AutomationInfluencing the UI Automation tree views

La conception de l’infrastructure UI Automation repose sur des arborescences, où les clients UI Automation peuvent récupérer les relations entre les éléments d’une interface utilisateur à l’aide de trois affichages possibles : brut, de contrôle et de contenu.The UI Automation framework has a concept of tree views, where UI Automation clients can retrieve the relationships between elements in a UI using three possible views: raw, control, and content. L’affichage de contrôle est souvent utilisé par les clients UI Automation, car il fournit une bonne représentation et une organisation efficace des éléments interactifs d’une interface utilisateur.The control view is the view that's often used by UI Automation clients because it provides a good representation and organization of the elements in a UI that are interactive. Les outils de test vous permettent généralement de choisir l’arborescence à utiliser quand l’outil présente l’organisation des éléments.Testing tools usually enable you to choose which tree view to use when the tool presents the organization of elements.

Par défaut, toute classe dérivée de contrôle et quelques autres éléments s’affichent dans la vue de contrôle lorsque l’infrastructure UI Automation représente l’interface utilisateur d’une application Windows.By default, any Control derived class and a few other elements will appear in the control view when the UI Automation framework represents the UI for a Windows app. Cependant, il se peut que vous ne souhaitiez pas qu’un élément apparaisse dans l’affichage de contrôle en raison de la composition de l’interface utilisateur, où cet élément duplique des informations ou présente des informations qui ne sont pas importantes pour les scénarios d’accessibilité.But sometimes you don't want an element to appear in the control view because of UI composition, where that element is duplicating information or presenting information that's unimportant for accessibility scenarios. Utilisez la propriété jointe AutomationProperties.AccessibilityView pour modifier la façon dont les éléments sont exposés dans les arborescences.Use the attached property AutomationProperties.AccessibilityView to change how elements are exposed to the tree views. Si vous placez un élément dans l’arborescence Raw , la plupart des technologies d’assistance n’indiquent pas cet élément dans le cadre de leurs affichages.If you put an element in the Raw tree, most assistive technologies won't report that element as part of their views. Pour voir quelques exemples de ce fonctionnement dans des contrôles existants, ouvrez le fichier XAML de référence de la conception generic.xaml dans un éditeur de texte et recherchez AutomationProperties.AccessibilityView dans les modèles.To see some examples of how this works in existing controls, open the generic.xaml design reference XAML file in a text editor, and search for AutomationProperties.AccessibilityView in the templates.

Nom du texte interneName from inner text

Pour simplifier l’utilisation de chaînes qui existent déjà dans l’interface utilisateur visible pour les valeurs de noms accessibles, une grande partie des contrôles et autres éléments d’interface utilisateur permettent de déterminer automatiquement un nom accessible par défaut, en fonction du texte interne de l’élément ou de valeurs de chaînes de propriétés de contenu.To make it easier to use strings that already exist in the visible UI for accessible name values, many of the controls and other UI elements provide support for automatically determining a default accessible name based on inner text within the element, or from string values of content properties.

  • TextBlock, RichTextBlock, TextBox et RichTextBlock effectuent chacun la promotion de la valeur de la propriété Text comme nom accessible par défaut.TextBlock, RichTextBlock, TextBox and RichTextBlock each promote the value of the Text property as the default accessible name.
  • Toute sous-classe ContentControl utilise une technique « ToString » itérative pour rechercher des chaînes dans sa valeur de contenu , et promeut ces chaînes en tant que nom accessible par défaut.Any ContentControl subclass uses an iterative "ToString" technique to find strings in its Content value, and promotes these strings as the default accessible name.

Notes

Comme l’impose UI Automation, la longueur du nom accessible ne doit pas dépasser 2 048 caractères.As enforced by UI Automation, the accessible name length cannot be greater than 2048 characters. Si une chaîne utilisée pour la détermination automatique du nom accessible dépasse cette limite, le nom accessible est tronqué à ce niveau.If a string used for automatic accessible name determination exceeds that limit, the accessible name is truncated at that point.

Noms accessibles pour les imagesAccessible names for images

Pour prendre en charge les lecteurs d’écran et pour fournir les informations d’identification de base pour chaque élément dans l’interface utilisateur, vous devez parfois spécifier des alternatives textuelles à des informations non textuelles telles que des images et des graphiques (à l’exclusion des éléments purement décoratifs ou structurels).To support screen readers and to provide the basic identifying information for each element in the UI, you sometimes must provide text alternatives to non-textual information such as images and charts (excluding any purely decorative or structural elements). Ces éléments n’ayant pas de texte interne, aucune valeur n’est calculée pour le nom accessible.These elements don't have inner text so the accessible name won't have a calculated value. Vous pouvez définir directement le nom accessible à l’aide de la propriété attachée AutomationProperties.Name, comme Illustré dans l’exemple.You can set the accessible name directly by setting the AutomationProperties.Name attached property as shown in this example.

XAMLXAML

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

En guise d’alternative, vous pouvez inclure une légende qui s’affiche dans l’interface utilisateur visible et qui sert également d’informations d’accessibilité associées à l’étiquette pour le contenu de l’image.Alternatively, consider including a text caption that appears in the visible UI and that also serves as the label-associated accessibility information for the image content. Voici un exemple :Here's an example:

XAMLXAML

<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>

Étiquettes et LabeledBy.Labels and LabeledBy

Le meilleur moyen d’associer une étiquette à un élément de formulaire consiste à utiliser un objet TextBlock avec un x:Name comme texte d’étiquette, puis à définir la propriété jointe AutomationProperties.LabeledBy sur l’élément de formulaire pour faire référence à l’étiquetage TextBlock par son nom XAML.The preferred way to associate a label with a form element is to use a TextBlock with an x:Name for label text, and then to set the AutomationProperties.LabeledBy attached property on the form element to reference the labeling TextBlock by its XAML name. Si vous utilisez ce modèle, quand l’utilisateur clique sur une étiquette, le focus bascule vers le contrôle associé et les technologies d’assistance peuvent utiliser le texte d’étiquette comme nom accessible pour le champ de formulaire.If you use this pattern, when the user clicks the label, the focus moves to the associated control and assistive technologies can use the label text as the accessible name for the form field. Voici un exemple qui illustre cette technique.Here's an example that shows this technique.

XAMLXAML

<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>

Description accessible (facultative)Accessible description (optional)

Une description accessible fournit des informations d’accessibilité supplémentaires sur un élément d’interface utilisateur particulier.An accessible description provides additional accessibility information about a particular UI element. Vous fournissez généralement une description accessible lorsqu’un nom accessible seul ne transmet pas de façon adéquate l’objectif d’un élément.You typically provide an accessible description when an accessible name alone does not adequately convey an element's purpose.

Le lecteur d’écran Narrateur lit la description accessible d’un élément uniquement lorsque l’utilisateur demande davantage d’informations sur l’élément en appuyant sur Verr. maj+F.The Narrator screen reader reads an element's accessible description only when the user requests more information about the element by pressing CapsLock+F.

Le nom accessible est censé identifier le contrôle plutôt que documenter son comportement de manière exhaustive.The accessible name is meant to identify the control rather than to fully document its behavior. Si une brève description n’est pas suffisante pour expliquer le contrôle, vous pouvez définir la propriété jointe AutomationProperties. HelpText en plus de AutomationProperties.Name.If a brief description is not enough to explain the control, you can set the AutomationProperties.HelpText attached property in addition to AutomationProperties.Name.

Test anticipé et régulier de l’accessibilitéTesting accessibility early and often

Pour finir, la meilleure approche de la prise en charge des lecteurs d’écran consiste à tester vous-même votre application à l’aide d’un lecteur d’écran.Ultimately, the best approach for supporting screen readers is to test your app using a screen reader yourself. Cela vous permettra de savoir comment le lecteur d’écran se comporte et d’identifier les informations d’accessibilité éventuellement manquantes dans l’application.That will show you how the screen reader behaves and what basic accessibility information might be missing from the app. Vous pourrez alors ajuster les valeurs de propriétés d’interface utilisateur ou UI Automation en conséquence.Then you can adjust the UI or UI Automation property values accordingly. Pour plus d’informations, voir Tests d’accessibilité.For more info, see Accessibility testing.

L’un des outils que vous pouvez utiliser pour tester l’accessibilité s’appelle AccScope .One of the tools you can use for testing accessibility is called AccScope . L’outil AccScope est particulièrement utile car il vous permet d’afficher des représentations visuelles de votre interface utilisateur qui indiquent comment les technologies d’assistance peuvent voir votre application comme une arborescence d’automatisation.The AccScope tool is particularly useful because you can see visual representations of your UI that represent how assistive technologies might view your app as an automation tree. Il existe en particulier un mode Narrateur qui donne une vue de la façon dont le Narrateur obtient du texte de votre application et dont il organise les éléments dans l’interface utilisateur.In particular, there's a Narrator mode that gives a view of how Narrator gets text from your app and how it organizes the elements in the UI. AccScope est conçu de façon à pouvoir être utilisé et utile tout au long du cycle de développement d’une application, même pendant la phase de conception préliminaire.AccScope is designed so that it can be used and be useful throughout a development cycle for an app, even during the preliminary design phase. Pour plus d’informations, voir AccScope.For more info see AccScope.

Noms accessibles tirés de données dynamiquesAccessible names from dynamic data

Windows prend en charge de nombreux contrôles qui peuvent servir à afficher des valeurs provenant d’une source de données associée, grâce à une fonctionnalité appelée liaison de données .Windows supports many controls that can be used to display values that come from an associated data source, through a feature known as data binding . Lors du remplissage de listes avec des éléments de données, vous devrez peut-être appliquer une technique qui définit les noms accessibles des éléments de listes liés aux données une fois la liste initiale remplie.When you populate lists with data items, you may need to use a technique that sets accessible names for data-bound list items after the initial list is populated. Pour plus d’informations, voir « Scénario 4 » dans l’Exemple d’accessibilité XAML.For more info, see "Scenario 4" in the XAML accessibility sample.

Noms accessibles et localisationAccessible names and localization

Pour vous assurer que le nom accessible est également un élément localisé, vous devez appliquer des techniques correctes pour le stockage de chaînes localisables telles que les ressources, puis faire référence aux connexions de ressources avec des valeurs directive x:Uid.To make sure that the accessible name is also an element that is localized, you should use correct techniques for storing localizable strings as resources and then referencing the resource connections with x:Uid directive values. Si le nom accessible provient d’une utilisation AutomationProperties.Name définie de manière explicite, assurez-vous que la chaîne est également localisable.If the accessible name is coming from an explicitly set AutomationProperties.Name usage, make sure that the string there is also localizable.

Notez que les propriétés jointes telles que les propriétés AutomationProperties utilisent une syntaxe de qualification spéciale pour le nom de la ressource, afin que la ressource fasse référence à la propriété jointe telle qu’elle est appliquée à un élément spécifique.Note that attached properties such as the AutomationProperties properties use a special qualifying syntax for the resource name, so that the resource references the attached property as applied to a specific element. Par exemple, le nom de ressource pour AutomationProperties.Name appliqué à un élément d’interface utilisateur nommé MediumButton est : MediumButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name .For example, the resource name for AutomationProperties.Name as applied to a UI element named MediumButton is: MediumButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name.