Barrierefreiheit: barrierefreie Softwareentwicklung mit C# / WPF

WPF gibt es seit 2006. WPF ist eine Klassenbibliothek die zur Gestaltung von grafischen Benutzeroberflächen dient. Die Dokumentation zur barrierefreien Softwareentwicklung mit WPF ist noch sehr dünn. Deswegen wird es höchste Zeit, dass ich darüber schreibe.

Was ist WPF?

WPF heißt ausgeschrieben Windows Presentation Foundation. WPF ist ein Grafik-Framework und Fenstersystem des .NET Frameworks von Microsoft. Mit WPF können grafische Programmoberflächen erstellt werden. WPF löst das GUI-Toolkit Windows Forms ab.

So wird mit der Programmiersprache C# mit WPF Software barrierefrei gemacht
Barrierefreie Softwareentwicklung mit C# / WPF
Für Besucher die lieber ein Video anschauen als den Blogartikel komplett durchzulesen:

Die Software muss screenreadertauglich sein

Blinde und einige sehbehinderte Menschen arbeiten mit einer Software die sich Screenreader nennt. Damit der Screenreader eine Programmoberfläche lesen kann, muss in der Programmoberfläche Texte hinterlegt werden. Diese Texte müssen die Programmoberfläche beschreiben.

Laut Dokumentation ist die Eigenschaft Helptext dafür vorgesehen, dass einer Komponente Texte hinterlegt werden die der Screenreader vorliest.

Codebeispiel C#:

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

Meine praktischen Tests mit dem Screenreader NVDA haben gezeigt, dass die Screenreader die Tooltip-Eigenschaft vorlesen.

Codebeispiel:

edtSuchen.ToolTip="Bitte
Suchbegriff eingeben. Suche Starten mit der Enter-Taste";

Das ist ein Fehler bei WPF! Wenn kein Tooltip gesetzt wurde, dann liest der Screenreader die Eigenschaft Helptext vor. Wenn Sie die Eigenschaft Tooltip und Helptext setzen, dann liest der Screenreader die Eigenschaft Tooltip vor.

Die Software muss komplett per Tastatur bedienbar sein

Blinde Menschen und auch sehr viel Menschen mit Sehbehinderung können keine Computermaus bedienen. Um einen Mauszeiger an eine bestimmte Stelle auf dem Bildschirm bewegen zu können ist es unabdingbar dass ein Mensch sehen kann. Deswegen ist es wichtig, dass eine Software auch ohne Computermaus bedienbar ist. Das bedeutet, bei einer Software entwickelt mit WPF, dass jedes Bedienelement durch mehrfaches drücken der Tabulatortaste erreichbar sein muss.

Für Menschen mit Sehbehinderung ist es wichtig dass der Tastaturfokus gut sichtbar ist

Der Textcursor in Eingabefelder ist oft ein senkrechter Strich. Dieser ist für Menschen mit einer Sehbehinderung sehr schlecht sichtbar. Deswegen muss dafür gesorgt werden, dass der Tastaturfokus gut sichtbar ist. Dies kann realisiert werden, in dem die Hintergrundfarbe des Eingabefeldes gelb wird, wenn das Eingabefeld aktiv ist und weis, wenn das Eingabefeld nicht aktiv ist.

Codebeispiel C#:


private void TextBoxGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
        {
            if (ChkBarrierefrei.IsChecked.Value == true)
            {
                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;
            }
        }

Codebeispiel XAML:

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

Betriebssystemeinstellungen übernehmen

Zu einer guten barrierefreien Software gehört es, dass Betriebssystemeinstellungen übernommen werden. Menschen mit einer Sehbehinderung benötigen zum bedienen einer Software große Schriften, damit sie gut lesen können was auf dem Bildschirm zu sehen ist. Im Betriebssystem Windows bei Einstellungen -> System -> Anzeigen -> Skalierung und Anordnung -> Erweiterte Skalierungseinstellungen kann bei „Benutzerdefinierte Skalierung“ die Systemschriftgröße in Prozent angegeben werden. Damit diese Betriebssystemeinstellung übernommen wird, muss in der WPF-Software kein zusätzlicher Code eingebaut werden. Allerdings muss überprüft werden, ob die Software noch bedienbar ist, wenn der Anwender die Systemschrift um einen bestimmten Prozentsatz vergrößert. Übrigens, auch für ältere Menschen kann es hilfreich sein im Betriebssystem größere Schriften einzustellen. Im Betriebssystem Windows bei Einstellungen -> Erleichterte Bedienung kann Hoher Kontrast aktiviert werden. Menschen mit einer Farbfehlsichtigkeit oder Menschen mit einer starken Seheinschränkung aktivieren den Hohen Kontrast. Nachdem der hohe Kontrast aktiviert ist, muss die WPF-Anwendung frisch gestartet werden, damit der hohe Kontrast übernommen wird. Dadurch dass der hohe Kontrast andere Farben einstellt, können Menschen mit einer Farbfehlsichtigkeit Probleme haben die Software zu bedienen. Farbfehlsichtigkeit bedeutet, dass Menschen einer Farbe nicht den korrekten Farbnamen zuordnen können oder nicht sehen welche Farben zusammen passen und welche nicht. Menschen mit einer Farbfehlsichtigkeit haben auch Probleme bei einer dunklen Schrift-und Hintergrundfarbe oder bei einer hellen Schrift-und Hintergrundfarbe. Um eventuelle Farbanpassungen machen zu können, kann der hohe Kontrast abgefragt werden.

Codebeispiel:


private void HoherKontrast()
        {
            if (SystemParameters.HighContrast == true) 
            {
                edtSuchen.BorderThickness = new Thickness(1);
                edtSuchen.BorderBrush = Brushes.White;
                edtErsetzen.BorderThickness = new Thickness(1);
                edtErsetzen.BorderBrush = Brushes.White;
                ComboboxFontsize.BorderThickness = new Thickness(1);
                ComboboxFontsize.BorderBrush = Brushes.White;
                ComboboxFontname.BorderThickness = new Thickness(1);
                ComboboxFontname.BorderBrush = Brushes.White;
                AKTIVES_ELEMENT_CONTRAST = Brushes.Red;
                NICHTAKTIVES_ELEMENT_CONTRAST = Brushes.Black;
            }
            else
            {
                edtSuchen.BorderThickness = new Thickness(0);
                edtSuchen.BorderBrush = Brushes.Black;
                edtErsetzen.BorderThickness = new Thickness(0);
                edtErsetzen.BorderBrush = Brushes.Black;
                ComboboxFontsize.BorderThickness = new Thickness(0);
                ComboboxFontsize.BorderBrush = Brushes.Black;
                ComboboxFontname.BorderThickness = new Thickness(0);
                ComboboxFontname.BorderBrush = Brushes.Black;
                AKTIVES_ELEMENT_CONTRAST = Brushes.Yellow;
                NICHTAKTIVES_ELEMENT_CONTRAST = Brushes.White;
            }
        }

Um eine Farbkombination zwischen Hintergrundfarbe und Schriftfarbe zu finden, die für Menschen mit einer Farbfehlsichtigkeit gut erkennbar ist, kann eine kostenlose Software heruntergeladen werden. Die Software heißt Colour Contrast Analyser . Mit Ihr kann geprüft werden ob ein Farbkontrast für Menschen mit Farbfehlsichtigkeit gut ist oder nicht.

Bei meinem WPF-Texteditor bekommen die Aufklappbaren Listen (=Comboboxen) im hohen Kontrastmodus nicht die selbe Hintergrundfarbe wie die Eingabefelder. Ich habe versucht diesen Fehler mit Hilfe von WPF-Experten zu lösen, aber es geht nicht. Das ist ein Fehler bei WPF!

Barrierefreie Software entwickelt mit WPF zum kostenlosen Download

Auf meiner Unternehmenswebseite gibt es einen Texteditor der für Blinde und Sehbehinderte Menschen bedienbar ist. Er kann hier kostenlos heruntergeladen werden.

Schlussbemerkung:

Barrierefreie Softwareentwicklung mit Microsoft Dotnet WPF ist möglich. Allerdings hat WPF doch einige Fehler die dringend behoben werden müssen. Wenn Sie noch fragen haben dann rufen Sie mich an 07121/504458 oder schreiben eine Mail info@marlem-software.de .

Autor: Markus Lemcke

Barrierefreies Webdesign Barrierefreie Softwareentwicklung (Java + Microsoft.net) Barrierefreiheit bei Betriebssystemen(Windows, Android, IOS, Linux)

Schreibe einen Kommentar