Verfügbarmachen von grundlegenden Informationen zur Barrierefreiheit
Grundlegende Informationen zur Barrierefreiheit sind häufig nach Name, Rolle und Wert kategorisiert. In diesem Thema wird Code beschrieben, mit dem Ihre App die grundlegenden Informationen verfügbar machen kann, die von Hilfstechnologien benötigt werden.
Name für barrierefreie Benutzer
Ein barrierefreier Name ist eine kurze, beschreibende Textzeichenfolge, die eine Sprachausgabe zum Ankündigen eines UI-Elements verwendet. Legen Sie den Barrierefreien Namen für UI-Elemente so fest, dass sie eine Bedeutung haben, die wichtig ist, um den Inhalt zu verstehen oder mit der Benutzeroberfläche zu interagieren. Solche Elemente enthalten in der Regel Bilder, Eingabefelder, Schaltflächen, Steuerelemente und Regionen.
In dieser Tabelle wird beschrieben, wie Sie einen barrierefreien Namen für verschiedene Elementtypen in einer XAML-Benutzeroberfläche definieren oder abrufen.
Elementtyp | Beschreibung |
---|---|
Statischer Text | Bei TextBlock - und RichTextBlock-Elementen wird automatisch ein barrierefreier Name aus dem sichtbaren (inneren) Text bestimmt. Der gesamte Text in diesem Element wird als Name verwendet. Siehe Name aus innerem Text. |
Bilder | Das XAML Image-Element weist kein direktes Analog zum HTML-Alt-Attribut von img und ähnlichen Elementen auf. Verwenden Sie entweder AutomationProperties.Name , um einen Namen anzugeben, oder verwenden Sie die Beschriftungstechnik. Siehe Barrierefreie Namen für Bilder. |
Formularelemente | Der Name für den Zugriff auf ein Formularelement sollte mit der Beschriftung übereinstimmen, die für dieses Element angezeigt wird. Siehe Bezeichnungen und "LabeledBy". |
Schaltflächen und Links | Standardmäßig basiert der barrierefreie Name einer Schaltfläche oder eines Links auf dem sichtbaren Text, wobei dieselben Regeln verwendet werden wie in Name aus innerem Text beschrieben. Verwenden Sie in Fällen, in denen eine Schaltfläche nur ein Bild enthält, AutomationProperties.Name , um eine textgeschützte Entsprechung der beabsichtigten Aktion der Schaltfläche bereitzustellen. |
Die meisten Containerelemente wie Panels fördern ihre Inhalte nicht als barrierefreien Namen. Dies liegt daran, dass es sich um den Elementinhalt handelt, der einen Namen und eine entsprechende Rolle und nicht seinen Container melden soll. Das Containerelement meldet möglicherweise, dass es sich um ein Element handelt, das untergeordnete Elemente in einer Microsoft-Benutzeroberflächenautomatisierung-Darstellung aufweist, sodass die Hilfstechnologielogik sie durchlaufen kann. Benutzer von Hilfstechnologien müssen jedoch in der Regel nicht mehr über die Container wissen und daher werden die meisten Container nicht benannt.
Rolle und Wert
Die Steuerelemente und andere UI-Elemente, die Teil des XAML-Vokabulars sind, implementieren Benutzeroberflächenautomatisierung Unterstützung für die Berichtsrolle und den Wert als Teil ihrer Definitionen. Sie können Benutzeroberflächenautomatisierung Tools verwenden, um die Rollen- und Wertinformationen für die Steuerelemente zu untersuchen, oder Sie können die Dokumentation für die AutomationPeer-Implementierungen der einzelnen Steuerelemente lesen. Die verfügbaren Rollen in einem Benutzeroberflächenautomatisierung Framework werden in der AutomationControlType-Aufzählung definiert. Benutzeroberflächenautomatisierung Clients wie Hilfstechnologien können Rolleninformationen abrufen, indem Methoden aufgerufen werden, die vom Benutzeroberflächenautomatisierung-Framework mithilfe der AutomationPeer des Steuerelements verfügbar gemacht werden.
Nicht alle Steuerelemente weisen einen Wert auf. Steuerelemente, die über einen Wert verfügen, melden diese Informationen, um über die Peers und Muster zu Benutzeroberflächenautomatisierung, die von diesem Steuerelement unterstützt werden. Beispielsweise weist ein TextBox-Formularelement einen Wert auf. Eine Hilfstechnologie kann ein Benutzeroberflächenautomatisierung Client sein und erkennen, dass ein Wert vorhanden ist und was der Wert ist. In diesem speziellen Fall unterstützt das TextBox-Objekt das IValueProvider-Muster über die TextBoxAutomationPeer-Definitionen.
Hinweis
In Fällen, in denen Sie AutomationProperties.Name oder andere Techniken verwenden, um den Namen für den Zugriff explizit anzugeben, schließen Sie nicht denselben Text ein, der von der Steuerelementrolle verwendet wird, oder Geben Sie Informationen in den Namen für die Barrierefreiheit ein. Schließen Sie z. B. keine Zeichenfolgen wie "button" oder "list" in den Namen ein. Die Rollen- und Typinformationen stammen aus einer anderen Benutzeroberflächenautomatisierung Eigenschaft (LocalizedControlType), die von der standardmäßigen Steuerelementunterstützung für Benutzeroberflächenautomatisierung bereitgestellt wird. Viele Hilfstechnologien hängen den LocalizedControlType an den Namen für den Zugriff an, sodass das Duplizieren der Rolle im Barrierefreien Namen zu unnötigen Wiederholten Wörtern führen kann. Wenn Sie z. B. einem Schaltflächen-Steuerelement einen barrierefreien Namen von "Schaltfläche" oder "Schaltfläche" als letzten Teil des Namens zuweisen, wird dies möglicherweise von Bildschirmsprachausgaben als "Schaltflächenschaltfläche" gelesen. Sie sollten diesen Aspekt Ihrer Barrierefreiheitsinformationen mithilfe der Sprachausgabe testen.
Beeinflussen der Benutzeroberflächenautomatisierung Strukturansichten
Das Benutzeroberflächenautomatisierung Framework verfügt über ein Konzept von Strukturansichten, in dem Benutzeroberflächenautomatisierung Clients die Beziehungen zwischen Elementen in einer Benutzeroberfläche mithilfe von drei möglichen Ansichten abrufen können: roh, steuerelement und inhalte. Die Steuerelementansicht ist die Ansicht, die häufig von Benutzeroberflächenautomatisierung Clients verwendet wird, da sie eine gute Darstellung und Organisation der Elemente in einer interaktiven Benutzeroberfläche 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 abgeleiteten Control-Klassen und einige andere Elemente in der Steuerelementansicht angezeigt, wenn das Benutzeroberflächenautomatisierung-Framework die Benutzeroberfläche für eine Windows-App darstellt. Manchmal möchten Sie jedoch nicht, dass ein Element in der Steuerelementansicht aufgrund der Ui-Komposition angezeigt wird, bei der dieses Element Informationen dupliziert oder Informationen präsentiert, die für Barrierefreiheitsszenarien nicht von Bedeutung sind. Verwenden Sie die angefügte Eigenschaft AutomationProperties.AccessibilityView , um zu ändern, wie Elemente für die Strukturansichten 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 einige Beispiele für die Funktionsweise in vorhandenen Steuerelementen anzuzeigen, öffnen Sie die XAML-Entwurfsreferenzdatei "generic.xaml" in einem Text-Editor, und suchen Sie in den Vorlagen nach AutomationProperties.AccessibilityView .
Name aus innerem Text
Um die Verwendung von Zeichenfolgen zu vereinfachen, die bereits in der sichtbaren Benutzeroberfläche für Werte für barrierefreie Namen vorhanden sind, bieten viele Steuerelemente und andere UI-Elemente Unterstützung für die automatische Ermittlung eines standardmäßigen barrierefreien Namens basierend auf innerem Text innerhalb des Elements oder aus Zeichenfolgenwerten von Inhaltseigenschaften.
- TextBlock, RichTextBlock, TextBox und RichTextBlock stufen den Wert der Text-Eigenschaft als Standardnamen für barrierefreie Elemente her.
- Jede ContentControl-Unterklasse verwendet eine iterative "ToString"-Technik, um Zeichenfolgen im Inhaltswert zu finden und diese Zeichenfolgen als Standardnamen für barrierefreie Zeichenfolgen hochzustuft.
Hinweis
Wie durch Benutzeroberflächenautomatisierung erzwungen, darf die Länge des barrierefreien Namens nicht größer als 2048 Zeichen sein. Wenn eine Zeichenfolge, die für die automatische Ermittlung des barrierefreien Namens verwendet wird, diesen Grenzwert überschreitet, wird der Name für die Verwendung durch Zugriffe an diesem Punkt abgeschnitten.
Barrierefreie Namen für Bilder
Um Bildschirmsprachausgaben zu unterstützen und die grundlegenden Identifizierungsinformationen für jedes Element in der Benutzeroberfläche bereitzustellen, müssen Sie manchmal Textalternativen für nicht-textbezogene Informationen wie Bilder und Diagramme bereitstellen (mit Ausnahme von rein dekorativen oder strukturellen Elementen). Diese Elemente weisen keinen inneren Text auf, sodass der name für die Barrierefreiheit keinen berechneten Wert aufweist. Sie können den Namen für den Zugriff direkt festlegen, indem Sie die angefügte eigenschaft AutomationProperties.Name wie in diesem Beispiel gezeigt festlegen.
XAML
<!-- Comment -->
<Image Source="product.png"
AutomationProperties.Name="An image of a customer using the product."/>
Alternativ können Sie auch eine Textbeschriftung einschließen, die in der sichtbaren Benutzeroberfläche angezeigt wird und auch als bezeichnungsbezogene Barrierefreiheitsinformationen für den Bildinhalt dient. Ein Beispiel:
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>
Bezeichnungen und LabeledBy
Die bevorzugte Methode zum Zuordnen einer Beschriftung zu einem Formularelement besteht darin, einen TextBlock mit einem x:Name für Beschriftungstext zu verwenden und dann die angefügte AutomationProperties.LabeledBy-Eigenschaft für das Formularelement festzulegen, um auf den BeschriftungstextBlock anhand des XAML-Namens zu verweisen. Wenn Sie dieses Muster verwenden, können Hilfstechnologien den Bezeichnungstext als barrierefreien Namen für das Formularfeld verwenden. Hier ist ein Beispiel, das diese Technik zeigt.
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>
Barrierefreie Beschreibung (optional)
Eine barrierefreie Beschreibung enthält zusätzliche Barrierefreiheitsinformationen zu einem bestimmten UI-Element. In der Regel geben Sie eine barrierefreie Beschreibung an, wenn ein barrierefreier Name allein den Zweck eines Elements nicht angemessen vermittelt.
Die Sprachausgabe liest die Beschreibung eines Elements nur vor, wenn der Benutzer weitere Informationen zum Element anfordert, indem er FESTSTELLTASTE+F drückt.
Der Name des Barrierefreien dient dazu, das Steuerelement zu identifizieren, anstatt sein Verhalten vollständig zu dokumentieren. Wenn eine kurze Beschreibung nicht ausreicht, um das Steuerelement zu erläutern, können Sie zusätzlich zu AutomationProperties.Name die angefügte AutomationProperties.HelpText-Eigenschaft festlegen.
Frühzeitiges und häufiges Testen der Barrierefreiheit
Letztendlich besteht der beste Ansatz für die Unterstützung von Bildschirmsprachausgaben darin, Ihre App mit einer Sprachausgabe selbst zu testen. Dies zeigt Ihnen, wie sich die Sprachausgabe verhält und welche grundlegenden Barrierefreiheitsinformationen möglicherweise in der App fehlen. Anschließend können Sie die Ui- oder Benutzeroberflächenautomatisierung Eigenschaftswerte entsprechend anpassen. Weitere Informationen finden Sie unter Barrierefreiheitstests.
Eines der Tools, die Sie zum Testen der Barrierefreiheit verwenden können, heißt AccScope. Das AccScope-Tool ist besonders nützlich, da Sie visuelle Darstellungen ihrer Benutzeroberfläche sehen können, die darstellen, wie Hilfstechnologien Ihre App als Automatisierungsstruktur anzeigen können. Insbesondere gibt es einen Sprachausgabemodus, der eine Ansicht gibt, wie die Sprachausgabe Text aus Ihrer App abruft und wie sie die Elemente in der Benutzeroberfläche organisiert. AccScope ist so konzipiert, dass es während eines Entwicklungszyklus für eine App auch während der Vorläufigen Entwurfsphase verwendet und nützlich sein kann. Weitere Informationen finden Sie unter AccScope.
Barrierefreie Namen aus dynamischen Daten
Windows unterstützt viele Steuerelemente, die zum Anzeigen von Werten verwendet werden können, die aus einer zugeordneten Datenquelle stammen, über ein Feature, das als Datenbindung bezeichnet wird. Wenn Sie Listen mit Datenelementen auffüllen, müssen Sie möglicherweise eine Technik verwenden, die barrierefreie Namen für datengebundene Listenelemente festlegt, nachdem die ursprüngliche Liste aufgefüllt wurde. Weitere Informationen finden Sie unter "Szenario 4" im XAML-Beispiel für die Barrierefreiheit.
Barrierefreie Namen und Lokalisierung
Um sicherzustellen, dass der Name für den Zugriff auch ein lokalisiertes Element ist, sollten Sie die richtigen Techniken zum Speichern lokalisierbarer Zeichenfolgen als Ressourcen verwenden und dann auf die Ressourcenverbindungen mit x:Uid-Direktivenwerten verweisen. Wenn der Name für den Zugriff von einem explizit festgelegten AutomationProperties.Name Verwendung stammt, stellen Sie sicher, dass die Zeichenfolge auch lokalisierbar ist.
Beachten Sie, dass angefügte Eigenschaften wie die AutomationProperties-Eigenschaften eine spezielle qualifizierende Syntax für den Ressourcennamen verwenden, sodass die Ressource auf die angefügte Eigenschaft verweist, wie sie auf ein bestimmtes Element angewendet wird. Beispielsweise lautet der Ressourcenname für AutomationProperties.Name wie auf ein UI-Element angewendet: MediumButton
. MediumButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name
Zugehörige Themen
Windows developer