Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Grundlegende Informationen zur Barrierefreiheit werden häufig in Namen, Rolle und Wert kategorisiert. In diesem Thema wird Code beschrieben, mit dem Ihre App die grundlegenden Informationen verfügbar macht, die Hilfstechnologien benötigen.
Barrierefreier Name
Ein barrierefreier Name ist ein kurzer, beschreibender Text, den ein Bildschirmlesegerät 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 zugänglicher Name aus dem sichtbaren (inneren) Text bestimmt. Der gesamte Text in diesem Element wird als Name verwendet. Siehe Name aus dem inneren 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 Captioning-Technik. 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 textuelle Entsprechung der beabsichtigten Aktion der Schaltfläche bereitzustellen. |
Die meisten Containerelemente wie Bedienfelder geben ihren Inhalt nicht als barrierefreien Namen weiter. Dies liegt daran, dass der Elementinhalt einen Namen und eine entsprechende Rolle und nicht den Container angeben soll. Das Containerelement kann melden, dass es sich um ein Element handelt, das untergeordnete Elemente in einer Microsoft UI Automation-Darstellung enthält, damit die Logik der unterstützenden Technologie diese durchlaufen kann. Benutzer von Hilfstechnologien müssen jedoch in der Regel nichts ü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 die Unterstützung der Benutzeroberflächenautomatisierung für die Berichterstellung von Rolle und Wert als Teil ihrer Definitionen. Sie können Benutzeroberflächen-Automatisierungstools verwenden, um die Rollen- und Wertinformationen für die Steuerelemente zu untersuchen, oder Sie können die Dokumentation für die AutomationPeer- Implementierungen jedes Steuerelements lesen. Die verfügbaren Rollen in einem Benutzeroberflächenautomatisierungs-Framework werden in der AutomationControlType-Aufzählung definiert. Benutzeroberflächenautomatisierungs-Clients wie Hilfstechnologien können Rolleninformationen abrufen, indem Methoden aufgerufen werden, die das Benutzeroberflächenautomatisierungs-Framework mithilfe der AutomationPeer-des Steuerelements verfügbar macht.
Nicht alle Steuerelemente weisen einen Wert auf. Steuerelemente, die über einen Wert verfügen, melden diese Informationen der Benutzeroberflächenautomatisierung über die Peers und Muster, die von diesem Steuerelement unterstützt werden. Beispielsweise hat ein TextBox- Formularelement einen Wert. Eine Hilfstechnologie kann ein Client für die Automatisierung von Benutzeroberflächen sein und sowohl feststellen, dass ein Wert vorhanden ist, als auch herausfinden, wie dieser Wert lautet. In diesem speziellen Fall unterstützt die TextBox das IValueProvider Muster über die TextBoxAutomationPeer Definitionen.
Hinweis
In Fällen, in denen Sie AutomationProperties.Name oder andere Techniken verwenden, um den zugänglichen Namen explizit anzugeben, schließen Sie nicht denselben Text ein, der von der Steuerelementrolle oder Typeninformationen verwendet wird, in den barrierefreien Namen 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ächenautomatisierungs-Eigenschaft (LocalizedControlType), die von der standardmäßigen Steuerelementunterstützung für die Benutzeroberflächenautomatisierung bereitgestellt wird. Viele Hilfstechnologien hängen den LocalizedControlType- an den Namen für die Barrierefreiheit an, sodass das Duplizieren der Rolle im Namen der Barrierefreiheit zu unnötigen wiederholten Wörtern führen kann. Wenn Sie z. B. einem Button Steuerelement den barrierefreien Namen "Button" geben oder "Button" als letzten Teil des Namens einschließen, könnte dies von Bildschirmlesegeräten als "Button Button" gelesen werden. Sie sollten diesen Aspekt Ihrer Barrierefreiheitsinfos mit dem Narrator testen.
Beeinflussen der UI-Automatisierungs-Baumansichten
Das Benutzeroberflächenautomatisierungs-Framework verfügt über ein Konzept von Strukturansichten, in dem Benutzeroberflächenautomatisierungs-Clients die Beziehungen zwischen Elementen in einer Benutzeroberfläche mithilfe von drei möglichen Ansichten abrufen können: Rohdaten, Steuerelemente und Inhalte. Die Steuerelementansicht ist die Ansicht, die häufig von Benutzeroberflächenautomatisierungs-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 von Control abgeleiteten Klassen und einige andere Elemente in der Steuerelementansicht angezeigt, wenn das UI-Automatisierungsframework 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 Struktur Raw einfügen, melden die meisten Hilfstechnologien dieses Element nicht als Teil ihrer Ansichten. Um einige Beispiele für die Funktionsweise in vorhandenen Steuerelementen zu sehen, öffnen Sie die XAML-Entwurfsreferenzdatei "generic.xaml" in einem Text-Editor und suchen Sie innerhalb der 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 fördern jeweils den Wert der Eigenschaft Text als Standardzugriffsnamen.
- Jede ContentControl--Unterklasse verwendet eine iterative "ToString"-Technik, um Zeichenfolgen in ihrem Content Wert zu finden und diese Zeichenfolgen als Standardzugriffsnamen hochstuft.
Hinweis
Wie es von der Benutzeroberflächenautomatisierung vorgeschrieben ist, 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 barrierefreie Name 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 den Beschriftungstext zu verwenden und dann die angefügte Eigenschaft AutomationProperties.LabeledBy am Formularelement festzulegen, um auf den beschriftenden TextBlock anhand seines 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.
Der Narrator-Bildschirmleser liest die Beschreibung eines Elements nur, wenn der Nutzer zusätzliche Informationen über das Element abruft, indem er Feststelltaste+F drückt.
Der barrierefreie Name dient dazu, das Steuerelement zu identifizieren, statt sein Verhalten vollständig zu dokumentieren. Wenn eine kurze Beschreibung nicht ausreicht, um das Steuerelement zu erläutern, können Sie die angefügte Eigenschaft AutomationProperties.HelpText zusätzlich zu AutomationProperties.Namefestlegen.
Frühzeitiges und häufiges Testen der Barrierefreiheit
Letztendlich besteht der beste Ansatz zum Unterstützen von Screenreadern darin, Ihre App mit einem Screenreader selbst zu testen. Das zeigt Ihnen, wie sich der Bildschirmleser verhält und welche grundlegenden Barrierefreiheitsinformationen in der App möglicherweise fehlen. Anschließend können Sie die Werte der UI oder der UI-Automatisierung entsprechend anpassen. Weitere Informationen finden Sie unter Barrierefreiheitsprüfung.
Eines der Tools, die Sie zum Testen der Barrierefreiheit verwenden können, heißt AccScope. Das AccScope--Werkzeug ist besonders nützlich, da Sie visuelle Darstellungen Ihrer Benutzeroberfläche sehen können, die darstellen, wie Hilfstechnologien Ihre App als Automatisierungsbaum anzeigen könnten. Insbesondere gibt es einen Erzählermodus, der eine Übersicht bietet, wie der Erzähler Text aus Ihrer App abruft und wie er die Elemente in der Benutzeroberfläche organisiert. AccScope ist so konzipiert, dass es während eines Entwicklungszyklus für eine App, sogar während der vorläufigen Entwurfsphase, verwendet werden kann und nützlich ist. Weitere Informationen finden Sie unter AccScope.
Barrierefreie Bezeichnungen aus dynamischen Daten
Windows unterstützt viele Steuerelemente, die zum Anzeigen von Werten verwendet werden können, die aus einer zugeordneten Datenquelle stammen, durch ein Feature, das als Datenbindungbezeichnet 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 zugängliche Name auch ein lokalisiertes Element ist, sollten Sie die richtigen Techniken zum Speichern lokalisierbarer Zeichenfolgen als Ressourcen verwenden und dann auf die Ressourcen mit den Werten der x:Uid-Direktive verweisen. Wenn der Name für die Barrierefreiheit aus 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 er auf ein UI-Element mit dem Namen MediumButton
angewendet wird: MediumButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name
.
Zugehörige Themen
Windows developer