Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Podstawowe informacje o ułatwieniach dostępu są często podzielone na nazwy, rolę i wartość. W tym temacie opisano kod ułatwiający aplikacji uwidocznienie podstawowych informacji potrzebnych przez technologie pomocnicze.
Nazwa dostępna
Dostępna nazwa to krótki, opisowy ciąg tekstowy, którego czytnik zawartości ekranu używa do ogłaszania elementu interfejsu użytkownika. Ustaw dostępną nazwę elementów interfejsu użytkownika, aby mieć znaczenie ważne dla zrozumienia zawartości lub interakcji z interfejsem użytkownika. Takie elementy zazwyczaj obejmują obrazy, pola wejściowe, przyciski, kontrolki i regiony.
W tej tabeli opisano sposób definiowania lub uzyskiwania dostępnej nazwy dla różnych typów elementów w interfejsie użytkownika XAML.
| Typ elementu | Opis |
|---|---|
| Tekst statyczny | W przypadku elementów TextBlock i RichTextBlock dostępna nazwa jest automatycznie określana z widocznego (wewnętrznego) tekstu. Cały tekst w tym elemecie jest używany jako nazwa. Zobacz Nazwa z tekstu wewnętrznego. |
| Obrazy | Element XAML obrazu nie ma bezpośredniego analogii do atrybutu alt HTML elementów img i podobnych. Użyj AutomationProperties.Name, aby podać nazwę lub użyj techniki podpisywania. Sprawdź Dostępne nazwy obrazów. |
| Elementy formularza | Dostępna nazwa elementu formularza powinna być taka sama jak etykieta wyświetlana dla tego elementu. Zobacz Etykiety i OznaczonePrzez. |
| Przyciski i łącza | Domyślnie dostępna nazwa przycisku lub linku jest oparta na widocznym tekście, używając tych samych reguł, co opisane w temacie Nazwa z tekstu wewnętrznego. W przypadkach, gdy przycisk zawiera tylko obraz, użyj AutomationProperties.Name , aby podać tylko tekstowy odpowiednik zamierzonej akcji przycisku. |
Większość elementów kontenera, takich jak panele, nie promuje ich zawartości jako dostępnej nazwy. Dzieje się tak, ponieważ jest to zawartość elementu, która powinna zgłosić nazwę i odpowiadającą mu rolę, a nie jej kontener. Element kontenerowy może zgłosić, że jest to element, który ma elementy podrzędne w reprezentacji automatyzacji interfejsu użytkownika firmy Microsoft, tak aby logika technologii asystującej mogła go przetwarzać. Jednak użytkownicy technologii pomocniczych zwykle nie muszą wiedzieć o kontenerach, a tym samym większość kontenerów nie jest nazwana.
Rola i wartość
Kontrolki i inne elementy interfejsu użytkownika, które są częścią słownictwa XAML implementują obsługę automatyzacji interfejsu użytkownika na potrzeby raportowania roli i wartości w ramach ich definicji. Możesz użyć narzędzi automatyzacji interfejsu użytkownika do zbadania informacji o roli i wartości dla kontrolek lub zapoznać się z dokumentacją implementacji usługi AutomationPeer każdej kontrolki. Dostępne role w strukturze automatyzacji interfejsu użytkownika są zdefiniowane w wyliczeniu AutomationControlType. Klienci automatyzacji interfejsu użytkownika, tacy jak technologie wspomagające, mogą uzyskiwać informacje o rolach, wywołując metody udostępniane przez strukturę automatyzacji interfejsu użytkownika przy użyciu kontrolki AutomationPeer.
Nie wszystkie kontrolki mają wartość. Kontrolki, które mają wartość raportują te informacje do automatyzacji interfejsu użytkownika za pośrednictwem elementów równorzędnych i wzorców obsługiwanych przez tę kontrolkę. Na przykład element formularza TextBox ma wartość. Technologia pomocna może być klientem automatyzacji interfejsu użytkownika i może wykryć zarówno, że wartość istnieje, jak i jaka jest wartość. W tym konkretnym przypadku
Uwaga / Notatka
W przypadkach, gdy używasz AutomationProperties.Name lub innych technik do jawnego podania dostępnej nazwy, nie należy dołączać tego samego tekstu, co jest używane przez rolę kontrolki lub informacje o typie w dostępnej nazwie. Na przykład nie dołączaj ciągów, takich jak "button" lub "list" w nazwie. Informacje o roli i typie pochodzą z innej właściwości automatyzacji interfejsu użytkownika (LocalizedControlType), która jest dostarczana przez domyślną obsługę kontroli dla automatyzacji interfejsu użytkownika. Wiele technologii pomocniczych dołącza element LocalizedControlType do dostępnej nazwy, dlatego duplikowanie roli w dostępnej nazwie może spowodować niepotrzebne powtórzenie wyrazów. Jeśli na przykład nadasz kontroli Przycisk dostępną nazwę "przycisk" lub dołączysz "przycisk" jako ostatnią część nazwy, może to być odczytywane przez czytniki ekranu jako "przycisk przycisku". Należy przetestować ten aspekt informacji o ułatwieniach dostępu przy użyciu Narratora.
Wpływ na widoki drzewa automatyzacji interfejsu użytkownika
Struktura automatyzacji interfejsu użytkownika ma koncepcję widoków drzewa, w której klienci automatyzacji interfejsu użytkownika mogą pobierać relacje między elementami w interfejsie użytkownika przy użyciu trzech możliwych widoków: nieprzetworzonych, kontrolnych i zawartości. Widok sterowania to widok, który jest często używany przez klientów automatyzacji interfejsu użytkownika, ponieważ zapewnia dobrą reprezentację i organizację elementów w interfejsie użytkownika, które są interaktywne. Narzędzia do testowania zwykle umożliwiają wybranie widoku drzewa, który ma być używany, gdy narzędzie przedstawia organizację elementów.
Domyślnie wszystkie Control klasy pochodne i kilka innych elementów pojawi się w widoku kontrolki, gdy framework automatyzacji interfejsu użytkownika przedstawia interfejs użytkownika aplikacji Windows. Ale czasami nie chcesz, aby element był wyświetlany w widoku kontrolki z powodu kompozycji interfejsu użytkownika, gdzie ten element duplikuje informacje lub przedstawia informacje, które są nieistotne dla scenariuszy ułatwień dostępu. Użyj dołączonej właściwości AutomationProperties.AccessibilityView , aby zmienić sposób uwidocznienia elementów w widokach drzewa. Jeśli element zostanie umieszczony w drzewie Raw, większość technologii wspomagających nie zgłosi tego elementu jako część ich widoków. Aby zobaczyć kilka przykładów, jak to działa w istniejących kontrolkach, otwórz plik referencyjny projektu o nazwie generic.xaml w edytorze tekstu i wyszukaj AutomationProperties.AccessibilityView w szablonach.
Nazwa z tekstu wewnętrznego
Aby ułatwić korzystanie z ciągów, które już istnieją w widocznym interfejsie użytkownika dla dostępnych wartości nazw, wiele kontrolek i innych elementów interfejsu użytkownika zapewnia obsługę automatycznego określania domyślnej nazwy dostępnej na podstawie tekstu wewnętrznego w elemecie lub wartości ciągów właściwości zawartości.
- TextBlock, RichTextBlock, TextBox i RichTextBlock, każdy promuje wartość właściwości Text jako domyślnej nazwy dostępnej.
- Każda podklasa ContentControl używa iteracyjnej techniki "ToString" do znajdowania ciągów w wartości Content i promuje te ciągi jako domyślną dostępną nazwę.
Uwaga / Notatka
Zgodnie z wymuszaną przez automatyzację interfejsu użytkownika długość dostępnej nazwy nie może być większa niż 2048 znaków. Jeśli ciąg używany do automatycznego określania nazwy dostępnej przekracza ten limit, dostępna nazwa jest obcięta w tym momencie.
Dostępne nazwy obrazów
Aby obsługiwać czytniki zawartości ekranu i dostarczać podstawowe informacje identyfikujące dla każdego elementu w interfejsie użytkownika, czasami należy podać alternatywy tekstowe dla informacji nietekstowych, takich jak obrazy i wykresy (z wyłączeniem elementów czysto dekoracyjnych lub strukturalnych). Te elementy nie mają tekstu wewnętrznego, więc dostępna nazwa nie będzie mieć wartości obliczeniowej. Nazwę dostępną można ustawić bezpośrednio, ustawiając właściwość dołączoną AutomationProperties.Name , jak pokazano w tym przykładzie.
XAML
<!-- Comment -->
<Image Source="product.png"
AutomationProperties.Name="An image of a customer using the product."/>
Alternatywnie rozważ dołączenie podpisu tekstowego, który pojawia się w widocznym interfejsie użytkownika i jednocześnie pełni rolę etykiety zapewniającej dostępność informacji o zawartości obrazu. Oto przykład:
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>
Etykiety i opisywane przez
Preferowanym sposobem skojarzenia etykiety z elementem formularza jest użycie TextBlock z x:Name tekstu etykiety, a następnie ustawienie właściwości AutomationProperties.LabeledBy dołączonej właściwości w elemencie formularza w celu odwołania się do etykietowania TextBlock według nazwy XAML. Jeśli używasz tego wzorca, technologie pomocnicze mogą używać tekstu etykiety jako dostępnej nazwy pola formularza. Oto przykład pokazujący tę technikę.
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>
Opis dostępny (opcjonalnie)
Dostępny opis zawiera dodatkowe informacje o ułatwieniach dostępu dotyczące określonego elementu interfejsu użytkownika. Zazwyczaj można podać dostępny opis, gdy sama dostępna nazwa nie przekazuje odpowiednio celu elementu.
Czytnik zawartości ekranu Narratora odczytuje dostępny opis elementu tylko wtedy, gdy użytkownik żąda dodatkowych informacji o elemecie, naciskając CapsLock+F.
Dostępna nazwa ma na celu zidentyfikowanie kontrolki, a nie pełne udokumentowanie jej zachowania. Jeśli krótki opis nie wystarczy, aby wyjaśnić element sterujący, możesz ustawić dołączoną właściwość AutomationProperties.HelpText oprócz AutomationProperties.Name.
Wczesne i często testowanie ułatwień dostępu
Ostatecznie najlepszym rozwiązaniem do obsługi czytników zawartości ekranu jest samodzielne przetestowanie aplikacji przy użyciu czytnika zawartości ekranu. Spowoduje to pokazanie, jak zachowuje się czytnik zawartości ekranu i jakie podstawowe informacje o ułatwieniach dostępu mogą brakować w aplikacji. Następnie możesz odpowiednio dostosować wartości właściwości interfejsu użytkownika lub automatyzacji interfejsu użytkownika. Aby uzyskać więcej informacji, zobacz Testowanie ułatwień dostępu.
Jednym z narzędzi, których można użyć do testowania ułatwień dostępu, jest AccScope. Narzędzie AccScope jest szczególnie przydatne, ponieważ można zobaczyć wizualne reprezentacje interfejsu użytkownika, które reprezentują, jak technologie pomocnicze mogą wyświetlać aplikację jako drzewo automatyzacji. W szczególności istnieje tryb Narratora, który zapewnia wgląd w sposób, w jaki Narrator pobiera tekst z aplikacji i jak organizuje elementy w interfejsie użytkownika. Program AccScope został zaprojektowany tak, aby mógł być używany i przydatny w całym cyklu projektowania aplikacji, nawet w fazie wstępnej projektowania. Aby uzyskać więcej informacji, zobacz AccScope.
Dostępne nazwy z danych dynamicznych
System Windows obsługuje wiele kontrolek, które mogą służyć do wyświetlania wartości pochodzących ze skojarzonego źródła danych za pośrednictwem funkcji znanej jako powiązanie danych. W przypadku wypełniania list elementami danych może być konieczne użycie techniki ustawiania dostępnych nazw elementów listy powiązanych z danymi po wypełnieniu początkowej listy. Aby uzyskać więcej informacji, zobacz „Scenariusz 4” w przykładzie ułatwień dostępu XAML .
Dostępne nazwy i lokalizacja
Aby upewnić się, że dostępna nazwa jest również elementem zlokalizowanym, należy użyć poprawnych technik przechowywania ciągów lokalizowalnych jako zasobów, a następnie odwoływania się do połączeń zasobów z dyrektywy x:Uid wartości. Jeśli nazwa dostępna pochodzi z jawnie ustawionego AutomationProperties.Name użycia, upewnij się, że ciąg jest również lokalizowalny.
Należy pamiętać, że dołączone właściwości, takie jak AutomationProperties, używają specjalnej składni kwalifikującej nazwę zasobu, aby zasób odwoływał się do dołączonej właściwości zastosowanej do określonego elementu. Na przykład nazwa zasobu dla AutomationProperties.Name zastosowana do elementu interfejsu użytkownika o nazwie MediumButton to : MediumButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name.
Tematy pokrewne
Windows developer