Barrierefreie Softwareentwicklung mit Windows Presentation Foundation

WPF ist ein Grafik-Framework und Fenstersystem von .NET. Dass sich mit ihm barrierefreie Software entwickeln lässt, ist jedoch wenig bekannt.

In Pocket speichern vorlesen Druckansicht 30 Kommentare lesen
Barrierefreie Softwareentwicklung mit WPF
Lesezeit: 6 Min.
Von
  • Markus Lemcke
Inhaltsverzeichnis

Windows Presentation Foundation (WPF) ist der Nachfolger von Windows Forms. Bei WinForms haben Nutzer Programmoberflächen gestaltet, indem sie fertige Komponenten per Maus ins Fenster ziehen. Diesen Komfort bietet WPF nicht mehr, hier findet eine Trennung zwischen Programmoberfläche und Code statt. XAML (eXtensible Application Markup Language) ist bei WPF Microsofts Ansatz einer erweiterbaren Auszeichnungssprache zur Beschreibung grafischer Nutzeroberflächen. Entwickler schreiben in der Codebehind-Datei den Code, der ausgeführt wird, wenn Anwender einen mit XAML erstellten Schalter anklicken.

Um eine Programmoberfläche mit WPF mit einem Screenreader nutzen zu können, sind in den Oberflächenkomponenten Texte zu hinterlegen, die diese Komponenten beschreiben. Der blinde Softwarenutzer muss sich aufgrund der hinterlegten Texte vorstellen können, wie eine Programmoberfläche aussieht. Um das zu erreichen, müssen Entwickler der Eigenschaft "HelpText" einen Text zuweisen, der die Funktion einer Programmoberflächenkomponente beschreibt. Hier ein Codebeispiel in C#:

AutomationProperties.SetHelpText(edtSuchen, "Bitte Suchbegriff eingeben. Suche Starten mit der Enter-Taste");

Wenn das Eingabefeld "edtSuchen" den Fokusbekommt, dann liest der Screenreader den Text "Bitte Suchbegriff eingeben. Suche Starten mit der Enter-Taste" vor. Ist die Eigenschaft "HelpText" bei allen Oberflächenkomponenten gesetzt, lässt sich die WPF-Anwendung mit dem Screenreader nutzen.

Mehr Infos

Informationen zur Verbreitung von Sehbehinderungen, zur Gesetzeslage und zur aktuellen Situation blinder Menschen bei der Bedienung von Software finden sich im Artikel "Barrierefreie Software mit JavaFX".

Für blinde, aber auch für viele sehbehinderte Menschen ist es unabdingbar, dass eine Anwendung komplett per Tastatur bedienbar ist, da sie nicht wissen, an welcher Position sich der Mauszeiger auf dem Monitor befindet. Deswegen können sie nicht den Mauszeiger an eine bestimmte Position auf dem Monitor bewegen. Das bedeutet, dass blinde Menschen eine Software mit einer Maus gar nicht bedienen können.

Da blinde und viele sehbehinderte Menschen eine Software nur per Tastatur bedienen können ist als Erstes zu überprüfen, ob sich per Tabulatortaste jedes Bedienelement im Programmfenster erreichen lässt. Danach sollte dafür gesorgt werden, dass die wichtigsten Programmfunktionen und Menüs Tastenkürzel oder Shortcuts besitzen. Letztere tragen dazu bei, dass blinde und sehbehinderte Menschen Programmfunktionen schnell ausführen können.

Folgendes Codebeispiel zeigt, wie in XAML Menü-Shortcuts erstellt werden:

<MenuItem Command="New" Header="_Neu" InputGestureText="Strg+N" />
<MenuItem Command="Open" Header="_Öffnen" InputGestureText="Strg+O" />
<MenuItem Command="Save" Header="_Speichern" InputGestureText="Strg+S" />

Bei Beschriftungen von Eingabefeldern sollte man darauf achten, dass sie sich immer links vom Eingabefeld befinden, weil die Leserichtung auch bei Screenreadern von links nach rechts ist. Damit dieser weiß, welche Beschriftung zu welchem Eingabefeld gehört, müssen die beiden miteinander verknüpft sein. Das Verknüpfen von Label und Eingabefeld geschieht in XAML mit Target und Binding:

<Label x:Name="lblSuchen" 
Content="_Suchen"
Target="{Binding ElementName=edtSuchen}"/>

<TextBox x:Name="edtSuchen"
BorderThickness="1"
BorderBrush="Black"
Width="150"
GotKeyboardFocus="TextBoxGotKeyboardFocus"
LostKeyboardFocus="TextBoxLostKeyboardFocus"
KeyUp="EdtSuchen_KeyUp"
TabIndex="3"/>

Hier wird ein Label mit dem Text "Suchen" mit einem Eingabefeld "edtSuchen" verknüpft. Wenn es nun mit der Tastenkombination Alt + S aktiviert wird, bekommt das mit Binding verknüpfte Eingabefeld den Eingabefokus.