Temel erişilebilirlik bilgilerini açığa çıkarın

Erişilebilirlik ilkeleri, ad, rol ve değere karşılık gelir. Bu konu başlığında, yardımcı teknolojilerin kullanıcı arabiriminizi doğru yorumlayabilmesi için bu özellikleri uygulamanızda nasıl kullanıma açabileceğiniz gösterilmektedir.

Erişilebilir ad

Erişilebilir ad, bir ekran okuyucunun kullanıcı arabirimi öğesi için duyurduğu etikettir. Görseller, giriş alanları, düğmeler, denetimler ve bölgeler dahil olmak üzere anlamı aktaran veya etkileşimi destekleyen öğelere göre ayarlayın.

Aşağıdaki tabloda, XAML kullanıcı arabirimindeki çeşitli öğe türleri için erişilebilir bir ad tanımlama veya alma işlemi açıklanmaktadır.

Öğe türü Açıklama
Statik metin TextBlock ve RichTextBlock öğeleri için, görünür (iç) metinden erişilebilir bir ad otomatik olarak belirlenir. Bu öğedeki metnin tümü ad olarak kullanılır. İç metin'den Name bölümüne bakın.
Resimler XAML Görüntü öğesinin, HTML'deki img ve benzer öğelerin alt özniteliğine doğrudan bir karşılığı yoktur. Bir ad sağlamak için AutomationProperties.Name kullanın veya altyazı tekniğini kullanın. Bkz. Görüntüler için erişilebilir adlar.
Form öğeleri Form öğesinin erişilebilir adı, bu öğe için görüntülenen etiketle aynı olmalıdır. Bkz. Etiketleri ve LabeledBy.
Düğmeler ve bağlantılar Varsayılan olarak, düğme veya bağlantının erişilebilir adı, İç metinden ad bölümünde açıklanan kuralların aynısını kullanarak görünür metne dayanır. Düğmenin yalnızca görüntü içerdiği durumlarda, düğmenin hedeflenen eyleminin yalnızca metin eşdeğerini sağlamak için AutomationProperties.Name kullanın.

Kapsayıcı öğelerinin çoğu (paneller gibi) erişilebilir bir ad sunmaz. UI Otomasyonu'nda anlamlı alt öğelerin isim ve rol sağlaması gerekirken, kapsayıcı esas olarak gezinme için yapıyı ortaya koyar.

Rol ve değer

XAML denetimleri yerleşik UI Otomasyonu desteği aracılığıyla rolü (ve uygun olduğunda değeri) kullanıma sunar. Ui Otomasyonu araçlarıyla veya her denetimin AutomationPeer belgelerinde bu özellikleri inceleyin. Roller AutomationControlType ile eşlenir ve denetimin AutomationPeer aracılığıyla yardımcı teknolojilere gösterilir.

Yalnızca değer semantiğine sahip denetimler bir UI Otomasyonu değerini ortaya çıkarır. Örneğin TextBox, TextBoxAutomationPeer aracılığıyla IValueProvider'ı desteklediğinden yardımcı teknolojiler geçerli değerini algılayabilir ve okuyabilir.

Uyarı

AutomationProperties.Name açıkça ayarlarsanız, addaki "düğme" veya "liste" gibi rol/tür terimlerini yinelemeyin. Rol/tür LocalizedControlType'tan gelir ve birçok yardımcı teknoloji bunu adıyla birleştirir. Yinelenen rol metni "düğme düğmesi" gibi bir çıkış oluşturabilir. Ekran Okuyucusu ile bu davranışı doğrulayın.

UI Otomasyonu içindeki ağaç görünümlerini etkileme

UI Otomasyonu üç ağaç görünümünde öğe ilişkilerini temsil eder: ham, denetim ve içerik. Her görünüm farklı bir amaca hizmet eder. Ham görünüm neredeyse tüm otomasyon öğelerini içerir, denetim görünümü etkileşimli denetimleri ve yapısal gezinti noktalarını vurgular ve içerik görünümü kullanıcıya yönelik içeriği iletişim kuran öğelere odaklanır. Pratikte yardımcı teknolojiler ve erişilebilirlik denetleme araçları, tamlık ve kullanılabilirlik arasında en kullanışlı dengeyi sağladığından genellikle denetim görünümüne dayanır.

Varsayılan olarak, uygulamanız UI Otomasyonu aracılığıyla kullanıma sunulduğunda Denetimden türetilen öğelerin çoğu denetim görünümünde görünür. Birleştirilmiş kullanıcı arayüzlerinde, bu, yardımcı teknoloji kullanıcıları için karışıklık yaratan yinelenen veya düşük değerli düğümlere neden olabilir. AutomationProperties.AccessibilityView'ı kullanarak belirli öğelerin ağaç görünümlerine nasıl gösteriliyor olduğunu denetleyin. Örneğin, bir öğeyi Raw'a yerleştirmek, genellikle tanılama ve dolaşım senaryoları için kullanılabilir durumda tutar. Ancak bu, öğeyi birçok yardımcı teknoloji tarafından kullanılan birincil görünümlerden dışlar. Gerçek dünya desenlerini gözden geçirmek için generic.xaml içindeki denetim şablonlarını inceleyin ve AutomationProperties.AccessibilityView araması yapın.

İç metinden ad

Birçok XAML denetimi, kullanıcı arabiriminde zaten görünür olan metinden varsayılan bir erişilebilir ad türetebilir. Bu davranış, yaygın metin tabanlı desenler için açıkça AutomationProperties.Name ayarlama gereksinimini azaltır ve kullanıcıların duyduklarının gördükleriyle uyumlu kalmasına yardımcı olur.

  • TextBlock, RichTextBlock ve TextBox genellikle metin içeriğini varsayılan erişilebilir ad olarak yükseltir.
  • ContentControl alt sınıfları İçerik değerlerini değerlendirir ve varsayılan erişilebilir ad için dize içeriğini ayıklamak için yinelemeli bir "ToString" stratejisi kullanır.

Uyarı

UI Otomasyonu, erişilebilir ad için en fazla 2048 karakterlik bir zorlama uygular. Otomatik ad oluşturma daha uzun bir dize üretirse, değer kesilir.

Resimler için erişilebilir adlar

Resimler ve grafikler gibi metin olmayan içerikler için, ekran okuyucuların öğeyi doğru şekilde tanımlayıp duyurabilmesi için bir metin alternatifi sağlayın. Bu öğeler genellikle iç metni kullanıma sunmadığından, UI Otomasyonu otomatik olarak varsayılan bir erişilebilir ad türetemez. (Yalnızca dekoratif veya yapısal görseller özel durumlardır ve genellikle adlandırılmamalıdır.) Anlamlı bir görüntünün duyurulması gerektiğinde, aşağıdaki örnekte gösterildiği gibi AutomationProperties.Name açıkça ayarlayın.

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

Alternatif olarak, AutomationProperties.LabeledBy aracılığıyla görünür bir açıklamalı alt yazıyı kullanıma sunun ve görüntüyle ilişkilendirin. Bu, konuşulan etiketin ekran metniyle hizalı kalmasını sağlar ve işaretlemede dizelerin çoğaltılmasını önler. Aşağıdaki WinUI örneği bu düzeni gösterir:

<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>

Etiketler ve LabeledBy

Form alanları için tercih edilen etiketleme düzeni, TextBlock içinde görünür etiket metni tanımlamak ve AutomationProperties.LabeledBy aracılığıyla giriş denetiminden bu öğeye başvurmaktır. Bu, kullanıcı arabirimi etiketi ile otomasyon ağacındaki denetim arasında bir ilişki oluşturur, böylece yardımcı teknolojiler ekranda gösterilenle eşleşen bir alan adını duyurabilir. Aynı kaynak dize hem görsel hem de erişilebilir etiketlemeyi yönlendirdiğinden, bu desen genellikle etiket metnini birden çok özellikte çoğaltmaktan daha sürdürülebilirdir.

<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>

Erişilebilir açıklama (isteğe bağlı)

Erişilebilir bir açıklama, yalnızca erişilebilir ad yeterli olmadığında kullanıcı arabirimi öğesi hakkında ek bilgiler sağlar. Yardımcı teknoloji kullanıcılarının denetimle nasıl çalışabileceklerini anlamasına yardımcı olan amaç, kullanım ipuçları veya önemli davranış ayrıntıları gibi netleştirici bağlam eklemek için bu bağlamı kullanın.

Ekran Okuyucusu'nda açıklama genellikle varsayılan duyurunun bir parçası yerine isteğe bağlı olarak okunur. Kullanıcılar CapsLock+F tuşlarına basarak bu ek ayrıntıyı isteyebilir.

Erişilebilir adı denetimin birincil tanımlayıcısı olarak değerlendirin ve kısa tutun. Daha fazla açıklama gerektiğinde, AutomationProperties.Name ek olarak AutomationProperties.HelpText aracılığıyla bu ek ayrıntıları sağlayın.

Erişilebilirliği erken ve sık test etme

Ekran okuyucu desteğini doğrulamanın en güvenilir yolu, uygulamanızı yalnızca yayın zamanında değil geliştirme sırasında doğrudan bir ekran okuyucuyla test etmektir. Erken ve yinelenen test, eksik veya yanıltıcı erişilebilir adları, yanlış kontrol görünürlüğünü ve gezinti sorunlarını belirlemenize yardımcı olurken değişikliklerin düzeltilmesi hala uygun maliyetliyken yapılabilir. Her geçişten sonra kullanıcı arabirimi yapınızı ve UI Otomasyonu özelliklerinizi, kullanıcıların gerçekte ne duyduklarına ve arabirimde nasıl hareket ettiklerine göre geliştirin. Diğer ayrıntılar için bkz . Erişilebilirlik testi.

AccScope bu iş akışı için kullanışlı bir araçtır çünkü kullanıcı arabiriminizi bir otomasyon ağacı olarak görselleştirerek yardımcı teknolojilerin neleri keşfedebileceğini incelemeyi kolaylaştırır. Ekran Okuyucusu odaklı görünümü, metnin nasıl elde edildiğini ve öğelerin konuşulan çıkış için nasıl gruplandırıldığını ve sıralandığını doğrulamanıza yardımcı olur. Erken tasarım ve denetim şablonu doğrulaması dahil olmak üzere ürün yaşam döngüsü boyunca bunu kullanarak yapısal erişilebilirlik sorunlarını kullanıcı testinde görünmeden önce yakalayın. Ek ayrıntılar için bkz. AccScope.

Dinamik verilerden erişilebilir adlar

Birçok Windows denetimi, içeriği veri bağlama aracılığıyla işler; bu da erişilebilir adların genellikle statik XAML yerine çalışma zamanı verilerinden belirlendiği anlamına gelir. Liste veya öğe şablonları dinamik olarak doldurulduğunda, oluşturulan her öğenin bağlama tamamlandıktan sonra anlamlı bir erişilebilir ad ortaya çıkardığını doğrulayın. Denetim ve şablon bileşimine bağlı olarak, otomasyon ağacının son işlenen durumu yansıtması için erişilebilirlik özelliklerini program aracılığıyla ayarlamanız veya güncelleştirmeniz gerekebilir. Uçtan uca bir örnek için XAML erişilebilirlik örneğindeki (arşivlenmiş eski örnek) "Senaryo 4" bölümüne bakın.

Erişilebilir adlar ve yerelleştirme

Erişilebilir adlar görünür kullanıcı arabirimi metniyle aynı titizlikle yerelleştirilmelidir. Etiket dizelerini yerelleştirme kaynaklarında depolayın ve konuşulan çıkışın kullanıcının diliyle eşleşmesi için x:Uid yönerge eşlemeleri aracılığıyla bağlayın. AutomationProperties.Name açıkça ayarlarsanız, değerin sabit kodlanmış metin yerine yerelleştirilmiş kaynaklardan da geldiğinden emin olun.

AutomationProperties içindeki ekli özellikler, yerelleştirmenin belirli bir öğedeki ekli özelliği hedeflemesi için uygun bir kaynak anahtarı söz dizimi kullanır. Örneğin, MediumButton olarak adlandırılırsa, AutomationProperties.Name için kaynak anahtarı MediumButton.[using:Microsoft.UI.Xaml.Automation]AutomationProperties.Name olur.