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.

Es gibt Programmfenster mit vielen Eingabefeldern, etwa eine Eingabemaske zur Adressenverwaltung. In Eingabefeldern wird der Textcursor nur als senkrechter Strich dargestellt. Das ist für Menschen mit einer starken Sehbehinderung ein Problem. Da der senkrechte Strich schlecht zu sehen ist, können sie nicht erkennen, in welchem Eingabefeld sich der Textcursor befindet. Um das Problem zu lösen, sollte das aktive Eingabefeld eine andere Hintergrundfarbe bekommen. Hierfür eignet sich die Farbe Gelb:

private void TextBoxGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
TextBox source = e.Source as TextBox;
if (source != null)
{
source.Background = Brushes.Yellow;
}
}

private void TextBoxLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
TextBox source = e.Source as TextBox;
if (source != null)
{
source.Background = Brushes.White;
}
}

So lässt sich dafür sorgen, dass die Hintergrundfarbe des aktiven Eingabefeldes Gelb und somit gut sichtbar für Menschen mit einer Sehbehinderung ist. Wenn das Eingabefeld den Fokus verliert, wird die Hintergrundfarbe wieder weiß.

Menschen mit Sehbehinderung und Menschen mit Farbfehlsichtigkeit können Einstellungen im Betriebssystem vornehmen, die helfen, den Computer besser zu bedienen. Damit diese Einstellungen bei der Bedienung von Software helfen, muss die WPF-Anwendung sie übernehmen.

Bei Einstellungen | System | Anzeige | Erweiterte Skalierungseinstellungen | Benutzerdefinierte Skalierung lässt sich in Prozent angeben, wie groß die Schrift von Windows sein soll. Zum Testen ist 150 Prozent ein guter Wert. Nachdem die Windows-Systemschrift größer ist, muss die WPF-Anwendung gestartet werden. Sind alle Programmfenster les- und bedienbar, können auch Menschen mit einer Sehbehinderung mit der WPF-Anwendung arbeiten. Eine wichtige Anmerkung: Es ist unmöglich, ein Programmfenster so zu gestalten, dass sich die Windows-Systemschrift beliebig groß skalieren lässt. Dem guten Willen sind hier Grenzen gesetzt.

Große Systemschrift von Windows

Menschen mit Farbenfehlsichtigkeit können einer Farbe nicht immer den richtigen Namen geben. Außerdem wissen sie nicht, welche Farben zusammenpassen. Das bedeutet, wenn eine Software eine dunkle Hintergrund- und Schriftfarbe hat, ist sie für viele Menschen mit Farbenfehlsichtigkeit nicht zu bedienen, weil sie Beschriftungen von Schaltern und Eingabefelder nicht erkennen können. Deswegen sollten Entwickler bei der Farbgestaltung des Programmfensters auf einen guten Farbkontrast achten.

Hoher Kontrastmodus von Windows

Eine gute Hilfe hierfür ist das kostenlose Programm Colour Contrast Analyser. Mit ihm lässt sich überprüfen, ob ein Farbkontrast barrierefrei ist oder nicht. Wenn der Farbkontrast "Erfüllt (AA)" anzeigt, kommt er der deutschen Richtlinie für barrierefreie Internetseiten (BITV 2.0) nach. Wenn der Farbkontrast "Erfüllt (AAA)" anzeigt, ist er nach der internationalen Richtlinie für barrierefreie Internetseiten (WCAG 2.0) barrierefrei.

Um testen zu können, ob eine WPF-Anwendung auch im hohen Kontrastmodus bedienbar ist, ist der hohe Kontrast im Betriebssystem Windows bei Einstellungen | Erleichterte Bedienung | Hoher Kontrast einzustellen. Danach ist die WPF-Anwendung zu starten und zu überprüfen, ob die sie den hohen Kontrast übernommen hat. Als Zweites muss überprüft werden, ob trotz hohem Kontrast die Anwendung für Menschen mit Farbfehlsichtigkeit bedienbar ist. Das lässt sich mit dem Colour Contrast Analyser testen. Wenn der Farbkontrast zwischen Hintergrund- und Schriftfarbe nicht barrierefrei ist, dann sind Farbanpassungen vorzunehmen.

Wer alle aufgeführten Punkte umsetzt, hat eine barrierefreie WPF-Anwendung für blinde und sehbehinderte Menschen geschaffen.

Markus Lemcke
ist Software- und Webentwickler, Dozent sowie Berater in Sachen IT-Barrierefreiheit.
(ane)