Bereitstellen von grundlegenden Informationen zu UI-Elementen

Verfügbarmachen von grundlegenden Informationen zu UI-Elementen (XAML)

[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]

Sie suchen die HTML/JavaScript-Version dieses Themas? Informationen finden Sie unter Bereitstellen von grundlegenden Informationen zu UI-Elementen (HTML).

Hilfstechnologien (z. B. Bildschirmleseprogramme) benötigen Informationen zu den UI-Elementen einer App. Das System stellt die Informationen basierend auf der Darstellung einer App im Microsoft-Benutzeroberflächenautomatisierungs-Framework bereit. Grundlegende Barrierefreiheitsinformationen werden mitunter in die Kategorien Name, Rolle und Wert unterteilt. In diesem Thema wird der XAML-Code oder sonstiger Code beschrieben, mit dem Ihre App die grundlegenden Informationen verfügbar machen kann, die für Hilfstechnologien erforderlich sind.

Name zur Verwendung durch Bildschirmleseprogramme

Der Name für die Sprachausgabe ist eine kurze, beschreibende Textzeichenfolge, mit der die Sprachausgabe ein UI-Element ansagt. Legen Sie den Namen für Bildschirmleseprogramme bzw. barrierefreien Namen für UI-Elemente fest, deren Bedeutung wichtig für das Verständnis des Inhalts oder die Interaktion mit der Benutzeroberfläche ist. Zu diesen Elementen gehören normalerweise Bilder, Eingabefelder, Schaltflächen, Steuerelemente und Bereiche.

In der folgenden Tabelle wird beschrieben, wie Sie für verschiedene Elementtypen in einer XAML-Benutzeroberfläche einen Namen für Bildschirmleseprogramme definieren oder abrufen.

ElementtypBeschreibung
Statischer TextFür TextBlock- und RichTextBlock-Elemente wird automatisch anhand des sichtbaren (inneren) Textes ein Name für Bildschirmleseprogramme bestimmt. Der gesamte Text im Element wird als Name verwendet. Siehe Name aus innerem Text.
BilderDas Image-XAML-Element verfügt nicht über ein direktes Gegenstück zum alt-HTML-Attribut von img und ähnlichen Elementen. Verwenden Sie zum Bereitstellen eines Namens die AutomationProperties.Name-Eigenschaft oder das Untertitelverfahren. Siehe Namen zur Verwendung durch Bildschirmleseprogramme für Bilder.
Formularelemente Bei einem Formularelement sollte der Name für Bildschirmleseprogramme mit der Bezeichnung identisch sein, die für das Element angezeigt wird. Siehe Bezeichnungen und "LabeledBy".
Schaltflächen und Links Standardmäßig basiert der Name für Bildschirmleseprogramme einer Schaltfläche oder eines Links auf dem sichtbaren Text, wobei ebenfalls die unter Name aus innerem Text beschriebenen Regeln angewendet werden. Verwenden Sie in Fällen, in denen eine Schaltfläche nur ein Bild enthält, die AutomationProperties.Name-Eigenschaft, um eine reine Textentsprechung für die Schaltflächenaktion bereitzustellen.

 

Die meisten Containerelemente (z. B. Bereiche) stellen ihren Inhalt nicht als Namen zur Verwendung durch die Sprachausgabe bereit. Dies ist darauf zurückzuführen, dass der Name und die entsprechende Rolle nicht vom Container, sondern vom Elementinhalt gemeldet werden sollen. Das Containerelement kann in einer Benutzeroberflächenautomatisierungs-Darstellung melden, dass es ein Element mit untergeordneten Elementen ist, damit es von der Logik der Hilfstechnologie durchlaufen werden kann. Da Benutzer von Hilfstechnologien in der Regel nichts über die Container selbst wissen müssen, werden die meisten Container nicht benannt.

Rolle und Wert

Die Steuerelemente und anderen UI-Elemente des Windows-Runtime-XAML-Vokabulars implementieren im Rahmen ihrer Definitionen Benutzeroberflächenautomatisierungs-Unterstützung für die Meldung von Rolle und Wert. Sie können sich die Rollen- und Wertinformationen für die Steuerelemente der Windows-Runtime mithilfe von Benutzeroberflächenautomatisierungs-Tools ansehen oder die Dokumentation für die AutomationPeer-Implementierungen jedes Steuerelements lesen. Die verfügbaren Rollen in einem Benutzeroberflächenautomatisierungs-Framework sind in der AutomationControlType-Enumeration definiert. Benutzeroberflächenautomatisierungsclients, z. B. Hilfstechnologien, können Rolleninformationen per Aufruf von Methoden abrufen, die vom Benutzeroberflächenautomatisierungs-Framework über den AutomationPeer des Steuerelements verfügbar gemacht werden.

Nicht alle Steuerelemente haben einen Wert. Steuerelemente mit einem Wert stellen diese Informationen über die von ihnen unterstützten Peers und Muster für die Benutzeroberflächenautomatisierung bereit. Ein TextBox-Formularelement hat z. B. einen Wert. Eine Hilfstechnologe kann ein Benutzeroberflächenautomatisierungsclient sein und somit erkennen, ob ein Wert vorhanden ist und wie der Wert lautet. In diesem speziellen Fall unterstützt das TextBox-Formularelement das IValueProvider-Muster über die TextBoxAutomationPeer-Definitionen.

Hinweis  Wenn Sie AutomationProperties.Name oder andere Techniken verwenden, um den Namen für Bildschirmleseprogramme explizit anzugeben, darf der in den Informationen zur Steuerelementrolle bzw. zum Steuerelementtyp verwendete Text nicht im Namen für Bildschirmleseprogramme enthalten sein. Verwenden Sie z. B. keine Zeichenfolgen wie "Schaltfläche" oder "Liste" im Namen. Die Rollen- und Typinformationen stammen aus einer anderen Oberflächenautomatisierungseigenschaft (LocalizedControlType), die von der standardmäßigen Steuerelementunterstützung für die UI-Automatisierung bereitgestellt wird. Die meisten Hilfstechnologien fürgen den LocalizedControlType an den Namen für Bildschirmleseprogramme an. Wird die Rolle auch im Namen für Bildschirmleseprogramme – also doppelt – angegeben, kann dies zu einer unnötigen Wiederholung von Wörtern führen. Wenn Sie einem Button-Steuerelement beispielsweise den barrierefreien Namen „Schaltfläche“ geben oder „Schaltfläche“ am Ende des Namens einfügen, wird dies von Bildschirmleseprogrammen unter Umständen als "Schaltfläche Schaltfläche" vorgelesen. Dieser Aspekt Ihrer Informationen zur Barrierefreiheit sollte mithilfe der Sprachausgabe getestet werden.
 

Beeinflussen der UI-Automatisierungsstrukturansichten

Das Benutzeroberflächenautomatisierungs-Framework verfügt über ein Konzept mit Strukturansichten, bei dem Benutzeroberflächenautomatisierungsclients die Beziehungen zwischen Elementen in einer UI mithilfe von drei möglichen Ansichten abrufen können: unformatiert, Steuerelement und Inhalt. Die Steuerelementansicht wird häufig von Benutzeroberflächenautomatisierungsclients verwendet, da sie eine gute Darstellung und Organisation der interaktiven Elemente einer UI bietet. Mithilfe von Testtools können Sie in der Regel auswählen, welche Strukturansicht verwendet werden soll, wenn das Tool die Organisation von Elementen darstellt.

Standardmäßig werden alle von der Control-Klasse abgeleiteten sowie einige andere Elemente in der Steuerelementansicht angezeigt, wenn das Benutzeroberflächenautomatisierungs-Framework die Benutzeroberfläche für eine Windows-Runtime-App mit C++, C# oder Visual Basic darstellt. Es kann aber vorkommen, dass ein Element in der Steuerelementansicht aufgrund einer UI-Komposition nicht angezeigt werden soll, bei der das Element Informationen dupliziert oder Informationen darstellt, die für Barrierefreiheitsszenarien unwichtig sind. Ändern Sie mithilfe der angefügten AutomationProperties.AccessibilityView-Eigenschaft, wie Elemente für die Strukturansicht verfügbar gemacht werden. Wenn Sie ein Element in der Raw-Struktur platzieren, melden die meisten Hilfstechnologien dieses Element nicht als Teil ihrer Ansichten. Um Beispiele für die Funktionsweise in vorhandenen Steuerelementen zu erhalten, öffnen Sie die generic.xaml XAML-Entwurfsreferenzdatei in einem Text-Editor und suchen in den Vorlagen nach AutomationProperties.AccessibilityView.

Name aus innerem Text

Damit bereits in der sichtbaren Benutzeroberfläche vorhandene Zeichenfolgen leichter als Namen für Bildschirmleseprogramme genutzt werden können, unterstützen die meisten Steuerelemente und anderen UI-Elemente die automatische Bestimmung eines standardmäßigen Namens zur Verwendung durch Bildschirmleseprogramme. Dabei basiert der Name auf dem inneren Text im Element oder auf Zeichenfolgenwerten von Inhaltseigenschaften.

  • TextBlock, RichTextBlock, TextBox und RichTextBlock unterstützen den Wert der Text-Eigenschaft als standardmäßigen Namen für Bildschirmleseprogramme.
  • Unterklassen von ContentControl verwenden eine iterative "ToString"-Technik, um Zeichenfolgen im Content-Wert zu finden, und unterstützen diese Zeichenfolgen als standardmäßigen Namen für Bildschirmleseprogramme.
Hinweis   Von der Benutzeroberflächenautomatisierung wird vorgegeben, dass der Name für Bildschirmleseprogramme nicht länger als 2048 Zeichen sein darf. Überschreitet eine zum automatischen Bestimmen des Namens für Bildschirmleseprogramme verwendete Zeichenfolge dieses Zeichenlimit, wird der Name an der entsprechenden Stelle abgeschnitten.
 

Namen zur Verwendung durch Bildschirmleseprogramme für Bilder

Um Bildschirmleseprogramme zu unterstützen und die grundlegenden Identifikationsinformationen für jedes Element der Benutzeroberfläche bereitzustellen, müssen Sie manchmal Textalternativen für nicht textliche Informationen wie Bilder und Diagramme bereitstellen (ausgenommen hiervon sind rein dekorative Elemente oder Strukturelemente). Diese Elemente verfügen nicht über inneren Text, sodass der barrierefreie Name keinen berechneten Wert aufweist. Sie können den barrierefreien Namen direkt angeben, indem Sie die angefügte AutomationProperties.Name-Eigenschaft wie im folgenden Beispiel gezeigt festlegen.


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

Alternativ können Sie eine Textbeschriftung hinzufügen, die in der sichtbaren Benutzeroberfläche angezeigt wird und gleichzeitig als Barrierefreiheitsinformationen für die Bezeichnung des Bildinhalts dient. Beispiel:


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

Bezeichnungen und LabeledBy

Um einem Formularelement eine Bezeichnung zuzuordnen, wird empfohlen, einen TextBlock mit einem x:Name für Bezeichnungstext zu verwenden und die angefügte AutomationProperties.LabeledBy-Eigenschaft für das Formularelement so festzulegen, dass sie anhand des XAML-Namens auf den TextBlock mit der Bezeichnung verweist. Bei Verwendung dieses Musters wird der Fokus auf das zugeordnete Steuerelement verschoben, wenn der Benutzer auf die Bezeichnung klickt, und Hilfstechnologien können den Bezeichnungstext als Namen für Bildschirmleseprogramme für das Formularfeld verwenden. Das folgende Beispiel veranschaulicht diese Vorgehensweise.


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

Beschreibung zur Verwendung durch Bildschirmleseprogramme (optional)

Eine barrierefreie Beschreibung stellt weitere Informationen zur Barrierefreiheit für ein bestimmtes UI-Element bereit. Normalerweise stellen Sie eine barrierefreie Beschreibung bereit, wenn ein barrierefreier Name allein den Zweck eines Elements nicht ausreichend beschreibt.

Die Sprachausgabe liest die Beschreibung eines Elements nur vor, wenn der Benutzer mit FESTSTELLTASTE+F weitere Informationen zum Element anfordert.

Der Name für Bildschirmleseprogramme soll keine vollständige Beschreibung des Steuerelementverhaltens bereitstellen, sondern das Steuerelement identifizieren. Falls eine kurze Beschreibung nicht ausreicht, um das Steuerelement zu beschreiben, können Sie die angefügte AutomationProperties.HelpText-Eigenschaft zusätzlich zur AutomationProperties.Name-Eigenschaft festlegen.

Frühzeitiges und häufiges Testen der Barrierefreiheit

Der beste Ansatz beim Implementieren der Unterstützung für Bildschirmleseprogramme besteht letztlich darin, die App selbst mit einem Bildschirmleseprogramm zu testen. So können Sie sehen, wie sich das Bildschirmleseprogramm verhält und welche grundlegenden Barrierefreiheitsinformationen in der App fehlen. Anschließend können Sie die Benutzeroberfläche oder Eigenschaftswerte der Benutzeroberflächenautomatisierung entsprechend anpassen. Weitere Informationen finden Sie unter Testen der Barrierefreiheit Ihrer App.

Eines der Tools, das Sie zum Testen der Barrierefreiheit verwenden können, heißt AccScope. Das Tool AccScope ist besonders nützlich, weil Sie visuelle Darstellungen Ihrer UI anzeigen können, mit denen anhand einer Automatisierungsstruktur verdeutlicht wird, wie Ihre App mit Hilfstechnologie angezeigt wird. Es ist beispielsweise ein Sprachausgabemodus vorhanden, in dem Sie sehen, wie die Sprachausgabe Text aus der App abruft und die Elemente in der UI organisiert. AccScope ist so konzipiert, dass das Tool während des gesamten Entwicklungszyklus einer App verwendet werden kann und nützlich ist. Dies gilt auch für die Phase des vorläufigen Entwurfs. Weitere Informationen finden Sie unter EH-Viewer.

Namen zur Verwendung durch Bildschirmleseprogramme aus dynamischen Daten

Die Windows-Runtime unterstützt viele Steuerelemente, mit denen durch ein als Datenbindung bezeichnetes Feature Werte aus einer zugeordneten Datenquelle angezeigt werden können. Wenn Sie Listen mit Datenelementen auffüllen, müssen Sie nach dem Auffüllen der anfänglichen Liste möglicherweise eine Technik verwenden, die Namen für Bildschirmleseprogramme für datengebundene Listenelemente festlegt. Weitere Informationen finden Sie unter "Szenario 4" im XAML-Beispiel für Barrierefreiheit.

Namen zur Verwendung durch Bildschirmleseprogramme und Lokalisierung

Um sicherzustellen, dass der Name für Bildschirmleseprogramme auch ein lokalisiertes Element ist, sollten Sie lokalisierbare Zeichenfolgen mithilfe entsprechender Techniken als Ressourcen speichern und dann mit x:Uid-Werten auf die Ressourcenverbindungen verweisen. Wenn der Name für Bildschirmleseprogramme aus einer explizit festgelegten AutomationProperties.Name-Eigenschaft stammt, muss die dort angegebene Zeichenfolge ebenfalls lokalisierbar sein.

Beachten Sie, dass angefügte Eigenschaften, z. B. die AutomationProperties-Eigenschaften, eine spezielle Qualifizierungssyntax für den Ressourcennamen verwenden. Die Ressource verweist dann so auf die angefügte Eigenschaft, wie diese auf ein bestimmtes Element angewendet wurde. Der Ressourcenname für die AutomationProperties.Name-Eigenschaft, die auf ein UI-Element mit dem Namen MediumButton angewendet wurde, lautet beispielsweise wie folgt: MediumButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name. Weitere Informationen finden Sie unter Schnellstart: Übersetzen von UI-Ressourcen.

Verwandte Themen

AutomationProperties.Name
XAML-Beispiel für Barrierefreiheit
Testen der App auf Barrierefreiheit

 

 

Anzeigen:
© 2016 Microsoft