Naciśnij “Enter” aby skoczyć do treści

Odczytywanie etykiety pola edycyjnego przez czytniki ekranu w WPF (C#)

Osoby widzące mogą wzrokowo odczytać etykietę pola edycyjnego w programie. Osoby używające czytnikó ekranu takich jak NVDA muszą bazować na tym co jest im przeczytane.

W tym wpisie zaproponuję  w jaki sposób można to poprawić w aplikacjach WPF (C#), tak aby czytnik ekranu odczytał etykietę przed przejściem do czytania pola edycyjnego.

Jeżęli nie wykonamy jakiś specjalnych zapisów przy tworzeniu aplikacji to NVDA przeczyta:

„Pole edycyjne”  oraz zawartość tego pola jeżeli zostało wypełnione.

Jeżęli już są jakieś dane, to można domyślić się na ich podstawie co autor chce mieć w tym polu. Jeżeli nie ma tam żadnego tekstu to mamy problem 🙂

Aby temu zaradzić można wskazać która etykieta dotyczy danego pola edycyjnego. W ten sposób czytnik ekranu najpierw przeczyta etykietę a dopiero później zawartość pola.

AutomationProperties.LabeledBy="{Binding ElementName=LbZaladunekMiasto}"

Przykładowy kod XAML:

<DockPanel HorizontalAlignment="Stretch">
    <Label Style="{StaticResource LabelkaPrzedPolemTekstowym}"
           Name="LbZaladunekMiasto"
           Content="Miasto"></Label>
    <dxe:TextEdit 
                  AutomationProperties.LabeledBy="{Binding ElementName=LbZaladunekMiasto}"
                  Text="{Binding List.AdresZaladunku.Miasto, UpdateSourceTrigger=PropertyChanged}" />
</DockPanel>

Po takim zabiegu czytnik ekranu przeczyta:

„Miasto ” + „Pole edycyjne” + zawartość pola.