Alapvető akadálymentességi információk nyilvánosságra helyezése

Az akadálymentesség alapjai a névhez, szerepkörhöz és értékhez kapcsolódnak. Ez a témakör bemutatja, hogyan teheti elérhetővé ezeket a tulajdonságokat az alkalmazásban, hogy a kisegítő technológiák megfelelően értelmezzék a felhasználói felületet.

Hozzáférhető név

Az akadálymentes név az a címke, amelyet a képernyőolvasó felolvas egy felhasználói felületi elemhez. Állítsa be olyan elemekre, amelyek jelentéstartalmat közvetítenek vagy támogatják az interakciót, beleértve a képeket, a beviteli mezőket, a gombokat, a vezérlőket és a régiókat.

Az alábbi táblázat bemutatja, hogyan definiálhat vagy szerezhet be akadálymentes nevet az XAML felhasználói felületén található különböző típusú elemekhez.

Elem típusa Leírás
Statikus szöveg TextBlock- és RichTextBlock-elemek esetén a rendszer automatikusan meghatároz egy akadálymentes nevet a látható (belső) szövegből. A rendszer az elem összes szövegét névként használja. Lásd a belső szövegnevét.
Képek Az XAML Image elem nem rendelkezik közvetlen megfelelővel a HTML alt attribútumma, amely az img és hasonló elemeknél található. Használjon AutomationProperties.Name a név megadására, vagy alkalmazza a feliratozási technikát. Lásd akadálymentes nevek képekhez.
Űrlapelemek Az űrlapelem akadálymentes nevének meg kell egyeznie az adott elemhez megjelenített címkével. Lásd: Címkék és LabeledBy.
Gombok és hivatkozások Alapértelmezés szerint egy gomb vagy hivatkozás akadálymentes neve a látható szövegen alapul, a Belső szövegből származó név cím alatt leírt szabályoknak megfelelően. Azokban az esetekben, amikor egy gomb csak képet tartalmaz, használja a AutomationProperties.Name a gomb kívánt műveletének csak szöveges megfelelőjét.

A legtöbb tárolóelem (például panel) nem tesz közzé akadálymentes nevet. A felhasználói felület automatizálásában az értékes gyermekelemeknek meg kell adniuk a nevet és a szerepkört, míg a konténer elsősorban a bejárási struktúrát teszi elérhetővé.

Szerepkör és érték

Az XAML-vezérlők a szerepkört (és adott esetben az értéket) a beépített felhasználói felületi automatizálási támogatásukon keresztül teszik elérhetővé. Vizsgálja meg ezeket a tulajdonságokat felhasználói felületi Automation-eszközökkel vagy az egyes vezérlők AutomationPeer dokumentációjában. A szerepkörök az AutomationControlType-ra vannak leképezve, és a kezelő AutomationPeerén keresztül elérhetővé válnak a kisegítő technológiák számára.

Csak az érték szemantikával rendelkező vezérlők bocsátanak ki UI Automatizálási értéket. A TextBox például támogatja az IValueProvider szolgáltatást a TextBoxAutomationPeer használatával, így a kisegítő technológiák képesek észlelni és olvasni az aktuális értékét.

Megjegyzés:

Ha explicit módon állítja be AutomationProperties.Name , ne ismételje meg a szerepkör-/típuskifejezéseket, például a "gomb" vagy a "lista" kifejezést a névben. A szerepkör/típus a LocalizedControlType-ból származik, és számos kisegítő technológia fűzi hozzá a névhez. Az ismétlődő szerepkörszöveg olyan kimenetet eredményez, mint a "gombgomb". Ellenőrizze ezt a viselkedést a Narrátor használatával.

A felhasználói felület automatizálás fa nézetstruktúráinak befolyásolása

Az UI Automation az elemek közötti kapcsolatokat három fa nézetben mutatja be: nyers, vezérlő és tartalom. Minden nézet más célt szolgál. A nyers nézet szinte minden automatizálási elemet tartalmaz, a vezérlő nézet az interaktív vezérlőket és a szerkezeti navigációs pontokat helyezi előtérbe, a tartalomnézet pedig a felhasználói tartalmakat kommunikáló elemekre összpontosít. A gyakorlatban a kisegítő technológiák és az akadálymentességi ellenőrző eszközök leggyakrabban a vezérlő nézetre támaszkodnak, mivel a teljesség és a használhatóság közötti leg hasznosabb egyensúlyt biztosítják.

Alapértelmezés szerint a vezérlőből származtatott elemek többsége akkor jelenik meg a vezérlőnézetben, ha az alkalmazás a felhasználói felület automatizálásán keresztül érhető el. A komponált felhasználói felületeken ez ismétlődő vagy alacsony értékű csomópontokat hozhat létre, amelyek zajt adnak a kisegítő technológiák felhasználói számára. Az AutomationProperties.AccessibilityView használatával szabályozhatja, hogyan legyenek egyes elemek a fanézetekben láthatók. Ha például egy elemet a Rawban helyez el, az általában diagnosztikai és bejárási forgatókönyvek esetén is elérhető marad, miközben kizárja a számos kisegítő technológia által használt elsődleges nézetekből. A valós minták áttekintéséhez vizsgálja meg a generic.xaml vezérlősablonjait, és keresse meg az AutomationProperties.AccessibilityView elemet.

Név belső szövegből

Számos XAML-vezérlő a felhasználói felületen már látható szövegből származtathatja az alapértelmezett akadálymentes nevet. Ez a viselkedés csökkenti a AutomationProperties.Name explicit módon történő beállításának szükségességét a gyakori szövegalapú mintákhoz, és segít megőrizni a felhasználók által látottakhoz igazodóan hallható szövegeket.

Megjegyzés:

A UI Automation 2048 karakteres maximális értéket kényszerít ki az akadálymentes névre. Ha az automatikus névlétrehozás hosszabb sztringet hoz létre, a rendszer csonkolja az értéket.

Akadálymentes nevek képekhez

Nem szöveges tartalmak, például képek és diagramok esetén adjon meg egy helyettesítő szöveget, hogy a képernyőolvasók megfelelően azonosíthassák és felolvashassák az elemet. Mivel ezek az elemek általában nem tesznek közzé belső szöveget, a felhasználói felület automatizálása nem tudja automatikusan levezetni az alapértelmezett akadálymentes nevet. (A tisztán dekoratív vagy szerkezeti vizualizációk kivételt jelentenek, és általában nem nevezhetők el.) Ha jelentéssel bíró képet kell bejelenteni , AutomationProperties.Name állítsa be explicit módon, ahogyan az az alábbi példában is látható.

<Image
    Source="Assets/product.png"
    AutomationProperties.Name="Customer using the product" />

Másik lehetőségként megjeleníthet egy látható feliratot, és társíthatja azt a képhez az AutomationProperties.LabeledBy használatával. Ez biztosítja, hogy a kimondott címke összhangban legyen a képernyőn megjelenő szöveggel, és elkerüli a karakterláncok duplikálását a jelölőnyelvben. Az alábbi WinUI-példa ezt a mintát mutatja be:

<StackPanel Spacing="8">
    <Image
        x:Name="heroImage"
        Width="480"
        Source="Assets/snoqualmie-NF.jpg"
        AutomationProperties.LabeledBy="{Binding ElementName=heroCaption}" />
    <TextBlock x:Name="heroCaption" Text="Mount Snoqualmie Skiing" />
</StackPanel>

Címkék és CímkézettÁltal

Űrlapmezők esetében az előnyben részesített címkézési minta a látható címkeszöveg definiálása egy TextBlock-ban , és a beviteli vezérlőből az AutomationProperties.LabeledBy használatával hivatkozni erre az elemre. Ez társításokat hoz létre a felhasználói felület címkéje és az automatizálási fa vezérlője között, így a kisegítő technológiák be tudják jelenteni a képernyőn láthatónak megfelelő mezőnevet. Ez a minta általában jobban karbantartható, mint a címkeszöveg több tulajdonságban történő duplikálása, mivel ugyanaz a forrássztring a vizualizációt és az akadálymentes címkézést is vezérli.

<StackPanel x:Name="LayoutRoot" Spacing="12">
    <StackPanel Orientation="Horizontal" Spacing="8">
        <TextBlock x:Name="firstNameLabel" Text="First name" />
        <TextBox
            x:Name="firstNameTextBox"
            Width="180"
            AutomationProperties.LabeledBy="{Binding ElementName=firstNameLabel}" />
    </StackPanel>

    <StackPanel Orientation="Horizontal" Spacing="8">
        <TextBlock x:Name="lastNameLabel" Text="Last name" />
        <TextBox
            x:Name="lastNameTextBox"
            Width="180"
            AutomationProperties.LabeledBy="{Binding ElementName=lastNameLabel}" />
    </StackPanel>
</StackPanel>

Akadálymentes leírás (nem kötelező)

Az akadálymentes leírás kiegészítő információkat nyújt a felhasználói felület elemeiről, ha az akadálymentes név önmagában nem elegendő. Segítségével egyértelműsítő környezetet adhat hozzá, például szándékot, használati tippeket vagy fontos viselkedési adatokat, amelyek segítenek a kisegítő technológiák felhasználóinak megérteni, hogyan használhatják a vezérlőt.

A Narrátorban a leírás általában igény szerint olvasható, nem pedig az alapértelmezett bejelentés részeként. A felhasználók a CapsLock+F billentyűkombináció lenyomásával kérhetik ezt a további részletet.

Kezelje a hozzáférhető nevet a vezérlő elsődleges azonosítójaként, és tartsa tömören. Ha további magyarázatra van szükség, adja meg ezt a további részleteket az AutomationProperties.HelpText segítségével a AutomationProperties.Name mellett.

Az akadálymentesség korai és gyakori tesztelése

A képernyőolvasó támogatásának ellenőrzésének legmegbízhatóbb módja, ha az alkalmazást közvetlenül képernyőolvasóval teszteli a fejlesztés során, nem csak a kiadás idején. A korai és ismételt tesztelés segít azonosítani a hiányzó vagy félrevezető akadálymentes neveket, a helytelen vezérlési expozíciót és a navigációs problémákat, miközben a módosítások még mindig olcsók. Minden egyes átadás után finomítsa a felhasználói felület struktúráját és a felhasználói felület automatizálási tulajdonságait annak alapján, hogy a felhasználók mit hallanak, és hogyan mozognak a felületen. További részletekért lásd: Akadálymentességi tesztelés.

Az AccScope hasznos eszköz ehhez a munkafolyamathoz, mivel automatizálási faként jeleníti meg a felhasználói felületet, így könnyebben megvizsgálhatja, hogy milyen kisegítő technológiák fedezhetők fel. A Narrátor-központú nézet segít megvizsgálni, hogyan származtatják a szöveget, valamint hogyan csoportosítják és rendezik az elemeket a beszélt kimenethez. Használja a termék életciklusa során, beleértve a korai tervezést és a vezérlősablonok érvényesítését is, hogy észlelje a szerkezeti akadálymentességi problémákat, mielőtt megjelennének a felhasználói tesztelésben. További részletekért lásd: AccScope.

Elérhető nevek dinamikus adatokból

Számos Windows-vezérlő adatkötéssel jeleníti meg a tartalmat, ami azt jelenti, hogy az akadálymentes neveket gyakran futásidejű adatokból határozzák meg, és nem statikus XAML-ről. Ha a lista- vagy elemsablonok dinamikusan vannak feltöltve, győződjön meg arról, hogy minden létrehozott elem egy értelmezhető, akadálymentes nevet tesz elérhetővé a kötés befejezése után. A vezérlő és a sablon összetételétől függően előfordulhat, hogy programozott módon kell beállítania vagy frissítenie az akadálymentességi tulajdonságokat, hogy az automation fa tükrözze a végleges renderelt állapotot. A teljes körű példa a XAML akadálymentességi mintájában található, a "Forgatókönyv 4" (archivált öröklött minta) részeként.

Akadálymentes nevek és lokalizáció

Az akadálymentes neveket a látható felhasználói felület szövegével megegyező szigorúsággal kell honosíteni. Tárolja a címkéket a honosítási erőforrásokban, és kapcsolja össze őket x:Uid direktíva-leképezéseken keresztül, így a beszélt kimenet megegyezik a felhasználó nyelvével. Ha explicit módon állítja be az AutomationProperties.Name-t, győződjön meg arról, hogy az érték lokalizált erőforrásokból származik, nem pedig kézzel kódolt szövegből.

Az AutomationProperties csatolt tulajdonságai egy minősített erőforráskulcs-szintaxist használnak, hogy a honosítás megcélozza a csatolt tulajdonságot egy adott elemen. Ha például az elem neve MediumButton, a AutomationProperties.Name erőforráskulcsa a MediumButton.[using:Microsoft.UI.Xaml.Automation]AutomationProperties.Name.