Partager via


Présenter des informations d’accessibilité élémentaires

Les informations d’accessibilité de base sont souvent classées par nom, rôle et valeur. Cette rubrique décrit le code qui permet à votre application d’exposer les informations de base dont les technologies d’assistance ont besoin.

Nom accessible

Un nom accessible est une chaîne de texte courte et descriptive utilisée par un lecteur d’écran pour annoncer un élément d’interface utilisateur. Définissez le nom accessible pour les éléments d’interface utilisateur afin d’avoir une signification qui est importante pour comprendre le contenu ou interagir avec l’interface utilisateur. Ces éléments incluent généralement des images, des champs d’entrée, des boutons, des contrôles et des régions.

Ce tableau décrit comment définir ou obtenir un nom accessible pour différents types d’éléments dans une interface utilisateur XAML.

Type d'élément Description
Texte statique Pour les éléments TextBlock et RichTextBlock, un nom accessible est automatiquement déterminé à partir du texte visible (interne). Tout le texte de cet élément est utilisé comme nom. Voir Nom à partir du texte interne.
Images L’élément Image XAML n’a pas d’analogie directe avec l’attribut de remplacement HTML d’img et d’éléments similaires. Utilisez AutomationProperties.Name pour fournir un nom ou utiliser la technique de sous-titrage. Consultez les noms accessibles pour les images.
Éléments de formulaire Le nom accessible d’un élément de formulaire doit être identique à l’étiquette affichée pour cet élément. Voir Étiquettes et LabeledBy.
Boutons et liens Par défaut, le nom accessible d’un bouton ou d’un lien est basé sur le texte visible, en utilisant les mêmes règles que celles décrites dans Nom à partir du texte interne. 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.

La plupart des éléments de conteneur tels que les panneaux ne font pas la promotion de leur contenu comme nom accessible. Cela est dû au fait qu’il s’agit du contenu de l’élément qui doit signaler un nom et un rôle correspondant, et non son conteneur. L’élément conteneur peut signaler qu’il s’agit d’un élément qui a des enfants dans une représentation Microsoft UI Automation, de sorte que la logique de technologie d’assistance peut la parcourir. Toutefois, les utilisateurs de technologies d’assistance n’ont généralement pas besoin de connaître les conteneurs et, par conséquent, la plupart des conteneurs ne sont pas nommés.

Rôle et valeur

Les contrôles et autres éléments d’interface utilisateur qui font partie du vocabulaire XAML implémentent la prise en charge d’UI Automation pour le rôle de création de rapports et la valeur dans le cadre de leurs définitions. Vous pouvez utiliser les outils UI Automation pour examiner les informations de rôle et de valeur des contrôles, ou vous pouvez lire la documentation relative aux implémentations AutomationPeer de chaque contrôle. Les rôles disponibles dans une infrastructure UI Automation sont définis dans l’énumération AutomationControlType . Les clients UI Automation tels que les technologies d’assistance peuvent obtenir des informations de rôle en appelant des méthodes exposées par l’infrastructure UI Automation à l’aide de AutomationPeer du contrôle.

Tous les contrôles n’ont pas de valeur. Les contrôles qui ont une valeur signalent ces informations à UI Automation via les homologues et les modèles pris en charge par ce contrôle. Par exemple, un élément de formulaire TextBox a une valeur. Une technologie d’assistance peut être un client UI Automation et découvrir qu’une valeur existe et quelle est la valeur. Dans ce cas spécifique, la zone de texte prend en charge le modèle IValueProvider via les définitions TextBoxAutomationPeer.

Remarque

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. Par exemple, n’incluez pas de chaînes telles que « button » ou « list » dans le nom. Les informations de rôle et de type proviennent d’une autre propriété UI Automation (LocalizedControlType) fournie par la prise en charge par défaut du contrôle pour UI Automation. De nombreuses technologies d’assistance ajoutent le LocalizedControlType au nom accessible, de sorte que la duplication du rôle dans le nom accessible peut entraîner des mots inutilement répétés. Par exemple, si vous donnez un contrôle Button un nom accessible de « button » ou incluez « button » comme dernière partie du nom, cela peut être lu par les lecteurs d’écran en tant que « bouton bouton ». Vous devez tester cet aspect de vos informations d’accessibilité à l’aide du Narrateur.

Influence des vues d’arborescence UI Automation

L’infrastructure UI Automation a un concept de vues d’arborescence, où les clients UI Automation peuvent récupérer les relations entre les éléments d’une interface utilisateur à l’aide de trois vues possibles : raw, control et content. La vue de contrôle est la vue souvent utilisée par les clients UI Automation, car elle fournit une bonne représentation et une organisation des éléments d’une interface utilisateur interactive. Les outils de test vous permettent généralement de choisir l’arborescence à utiliser lorsque l’outil présente l’organisation des éléments.

Par défaut, toute classe dérivée control et quelques autres éléments apparaissent dans la vue de contrôle lorsque l’infrastructure UI Automation représente l’interface utilisateur d’une application Windows. Mais parfois, vous ne souhaitez pas qu’un élément apparaisse dans la vue de contrôle en raison de la composition de l’interface utilisateur, où cet élément est dupliqué des informations ou présentant des informations qui ne sont pas importantes pour les scénarios d’accessibilité. Utilisez la propriété jointe AutomationProperties.AccessibilityView pour modifier la façon dont les éléments sont exposés aux arborescences. Si vous placez un élément dans l’arborescence Raw, la plupart des technologies d’assistance ne signalent pas cet élément dans le cadre de leurs vues. Pour voir quelques exemples de fonctionnement dans les contrôles existants, ouvrez le fichier XAML de référence de conception generic.xaml dans un éditeur de texte et recherchez AutomationProperties.AccessibilityView dans les modèles.

Nom à partir du texte interne

Pour faciliter l’utilisation de chaînes qui existent déjà dans l’interface utilisateur visible pour les valeurs de nom accessibles, de nombreux contrôles et autres éléments d’interface utilisateur prennent en charge la détermination automatique d’un nom accessible par défaut en fonction du texte interne dans l’élément ou à partir de valeurs de chaîne des propriétés de contenu.

Remarque

Comme appliqué par UI Automation, la longueur du nom accessible ne peut pas être supérieure à 2 048 caractères. Si une chaîne utilisée pour la détermination automatique du nom accessible dépasse cette limite, le nom accessible est tronqué à ce stade.

Noms accessibles pour les images

Pour prendre en charge les lecteurs d’écran et fournir les informations d’identification de base pour chaque élément de l’interface utilisateur, vous devez parfois fournir des alternatives de texte à des informations non textuelles telles que des images et des graphiques (à l’exclusion des éléments purement décoratifs ou structurels). Ces éléments n’ont pas de texte interne afin que le nom accessible n’ait pas de valeur calculée. Vous pouvez définir le nom accessible directement en définissant la propriété jointe AutomationProperties.Name comme indiqué dans cet exemple.

XAML

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

Vous pouvez également envisager d’inclure une légende de texte qui apparaît dans l’interface utilisateur visible et qui sert également d’informations d’accessibilité associées à l’étiquette pour le contenu de l’image. Voici un exemple :

XAML

<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

La méthode recommandée pour associer une étiquette à un élément de formulaire consiste à utiliser un TextBlock avec un x :Name pour le texte d’étiquette, puis à définir la propriété AutomationProperties.LabeledBy jointe sur l’élément de formulaire pour référencer l’étiquetage TextBlock par son nom XAML. Si vous utilisez ce modèle, les technologies d’assistance peuvent utiliser le texte de l’étiquette comme nom accessible pour le champ de formulaire. Voici un exemple qui montre cette technique.

XAML

<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 (facultatif)

Une description accessible fournit des informations d’accessibilité supplémentaires sur un élément d’interface utilisateur particulier. Vous fournissez généralement une description accessible lorsqu’un nom accessible seul ne transmet pas correctement l’objectif d’un élément.

Le lecteur d’écran du Narrateur lit la description accessible d’un élément uniquement lorsque l’utilisateur demande plus d’informations sur l’élément en appuyant sur CapsLock+F.

Le nom accessible est destiné à identifier le contrôle plutôt qu’à documenter entièrement son comportement. 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.

Tester l’accessibilité tôt et souvent

En fin de compte, la meilleure approche pour prendre en charge les lecteurs d’écran consiste à tester votre application à l’aide d’un lecteur d’écran vous-même. Cela vous montre comment le lecteur d’écran se comporte et quelles informations d’accessibilité de base peuvent être manquantes dans l’application. Vous pouvez ensuite ajuster les valeurs de propriété UI ou UI Automation en conséquence. Pour plus d’informations, consultez Tests d’accessibilité.

L’un des outils que vous pouvez utiliser pour tester l’accessibilité est appelé AccScope. L’outil AccScope est particulièrement utile, car vous pouvez voir des représentations visuelles de votre interface utilisateur qui représentent la façon dont les technologies d’assistance peuvent voir votre application comme une arborescence d’automatisation. En particulier, il existe un mode Narrateur qui donne une vue de la façon dont le Narrateur obtient du texte à partir de votre application et comment il organise les éléments dans l’interface utilisateur. AccScope est conçu pour qu’il puisse être utilisé et être utile tout au long d’un cycle de développement pour une application, même pendant la phase de conception préliminaire. Pour plus d’informations, consultez AccScope.

Noms accessibles à partir de données dynamiques

Windows prend en charge de nombreux contrôles qui peuvent être utilisés pour afficher des valeurs provenant d’une source de données associée, via une fonctionnalité appelée liaison de données. Lorsque vous remplissez des listes avec des éléments de données, vous devrez peut-être utiliser une technique qui définit des noms accessibles pour les éléments de liste liés aux données une fois la liste initiale remplie. Pour plus d’informations, consultez « Scénario 4 » dans l’exemple d’accessibilité XAML.

Noms et localisation accessibles

Pour vous assurer que le nom accessible est également un élément localisé, vous devez utiliser des techniques correctes pour stocker des chaînes localisables en tant que ressources, puis référencer les connexions de ressources avec des valeurs de directive x :Uid. Si le nom accessible provient d’un ensemble explicite AutomationProperties.Name utilisation, assurez-vous que la chaîne est également localisable.

Notez que les propriétés jointes telles que les propriétés AutomationProperties utilisent une syntaxe éligible spéciale pour le nom de la ressource, afin que la ressource référence la propriété jointe comme appliquée à un élément spécifique. Par exemple, le nom de la ressource pour AutomationProperties.Name tel qu’il est appliqué à un élément d’interface utilisateur nommé MediumButton est : MediumButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name.