Aracılığıyla paylaş


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

Temel erişilebilirlik bilgileri genellikle ad, rol ve değer olarak kategorilere ayrılır. Bu konuda, uygulamanızın yardımcı teknolojilerin ihtiyaç duyduğu temel bilgileri kullanıma sunmasına yardımcı olacak kod açıklanmaktadır.

Erişilebilir ad

Erişilebilir ad, ekran okuyucusunun kullanıcı arabirimi öğesini duyurmak için kullandığı kısa, açıklayıcı bir metin dizesidir. kullanıcı arabirimi öğelerinin erişilebilir adını, içeriği anlamak veya kullanıcı arabirimiyle etkileşim kurmak için önemli bir anlama sahip olacak şekilde ayarlayın. Bu tür öğeler genellikle görüntüleri, giriş alanlarını, düğmeleri, denetimleri ve bölgeleri içerir.

Bu tabloda, bir 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.

Paneller gibi çoğu kapsayıcı öğe içeriklerini erişilebilir ad olarak kullanmaz. Bunun nedeni, kapsayıcısını değil, bir adı ve ilgili rolü bildirmesi gereken öğe içeriği olmasıdır. Kapsayıcı öğesi, Microsoft UI Otomasyonu temsili içinde alt öğeleri olan bir öğe olduğunu bildirebilir, bu sayede yardımcı teknoloji mantığı bu öğeyi geçebilir. Ancak yardımcı teknoloji kullanıcılarının kapsayıcılar hakkında genel olarak bilgi sahibi olması gerekmez ve bu nedenle kapsayıcıların çoğu adlandırılamaz.

Rol ve değer

XAML sözlüğünde yer alan denetimler ve diğer kullanıcı arabirimi öğeleri, tanımlarının bir parçası olarak rol ve değeri raporlamak için UI Otomasyonu desteğini uygular. Ui Otomasyonu araçlarını kullanarak denetimlerin rol ve değer bilgilerini inceleyebilir veya her denetimin AutomationPeer uygulamalarının belgelerini okuyabilirsiniz. UI Otomasyonu çerçevesindeki kullanılabilir roller AutomationControlType numaralandırmasında tanımlanır. Yardımcı teknolojiler gibi UI Otomasyonu istemcileri, denetimin AutomationPeerkullanarak UI Otomasyonu çerçevesinin kullanıma sunduğu yöntemleri çağırarak rol bilgilerini alabilir.

Tüm denetimlerin bir değeri yoktur. Değeri olan denetimler bu bilgileri, bu denetim tarafından desteklenen eşler ve desenler aracılığıyla UI Otomasyonu'na bildirir. Örneğin, TextBox form öğesinin bir değeri vardır. Yardımcı teknoloji bir UI Otomasyonu istemcisi olabilir ve hem bir değerin var olduğunu hem de değerin ne olduğunu bulabilir. Bu özel durumda TextBox, TextBoxAutomationPeer tanımları aracılığıyla IValueProvider desenini destekler.

Uyarı

Erişilebilir adı açıkça sağlamak için AutomationProperties.Name veya diğer teknikleri kullandığınız durumlarda, denetim rolü tarafından kullanılan metni veya erişilebilir addaki tür bilgilerini eklemeyin. Örneğin, adında "düğme" veya "liste" gibi terimleri eklemeyin. Rol ve tür bilgileri, UI Otomasyonu için varsayılan denetim desteği tarafından sağlanan farklı bir UI Otomasyonu özelliğinden (LocalizedControlType) gelir. Birçok yardımcı teknoloji, LocalizedControlType'i erişilebilir ada eklediğinden, erişilebilir addaki rolün çifte olması gereksiz yere yinelenen sözcüklere neden olabilir. Örneğin, düğmesine erişilebilir bir ad olarak "düğme" verirseniz veya adın son kısmına "düğme" ifadesini eklerseniz, bu durum ekran okuyucular tarafından "düğme düğmesi" şeklinde okunabilir. Narrator'ı kullanarak erişilebilirlik bilginizin bu yönünü test etmelisiniz.

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

UI Otomasyonu çerçevesi ağaç görünümleri kavramına sahiptir. Burada UI Otomasyonu istemcileri üç olası görünüm kullanarak kullanıcı arabirimindeki öğeler arasındaki ilişkileri alabilir: ham, denetim ve içerik. Denetim görünümü, ui otomasyonu istemcileri tarafından genellikle kullanılan görünümdür çünkü etkileşimli bir kullanıcı arabirimindeki öğelerin iyi bir gösterimini ve düzenlenmesini sağlar. Test araçları genellikle araç öğelerin kuruluşunu sunarken hangi ağaç görünümünün kullanılacağını seçmenizi sağlar.

Varsayılan olarak, UI Otomasyonu çerçevesi bir Windows uygulamasının kullanıcı arabirimini temsil ettiğinde kontrol görünümünde herhangi bir Kontrol türetilmiş sınıf ve birkaç başka öğe görüntülenir. Ancak bazen bir öğenin, erişilebilirlik senaryoları için önemli olmayan bilgileri çoğalttığı veya sunduğu kullanıcı arabirimi oluşturması nedeniyle denetim görünümünde görünmesini istemezsiniz. Öğelerin ağaç görünümlerine gösterilme biçimini değiştirmek için AutomationProperties.AccessibilityView ekli özelliğini kullanın. Ham ağaçta bir öğe koyarsanız, yardımcı teknolojilerin çoğu bu öğeyi görünümlerinin bir parçası olarak raporlamaz. Bunun mevcut denetimlerde nasıl çalıştığını gösteren bazı örnekleri görmek için generic.xaml tasarım başvurusu XAML dosyasını bir metin düzenleyicisinde açın ve şablonlarda AutomationProperties.AccessibilityView araması yapın.

İç metinden ad

Erişilebilir ad değerleri için görünür kullanıcı arabiriminde zaten var olan dizeleri kullanmayı kolaylaştırmak için, denetimlerin ve diğer kullanıcı arabirimi öğelerinin çoğu öğe içindeki iç metne göre veya içerik özelliklerinin dize değerlerinden varsayılan erişilebilir bir adı otomatik olarak belirleme desteği sağlar.

  • TextBlock, RichTextBlock, TextBox ve RichTextBlock'un her biri Text özelliğinin değerini varsayılan erişilebilir ad olarak yükseltir.
  • Herhangi bir ContentControl alt sınıfı , content değerindeki dizeleri bulmak için yinelemeli bir "ToString" tekniği kullanır ve bu dizeleri varsayılan erişilebilir ad olarak yükseltir.

Uyarı

UI Otomasyonu tarafından zorunlu kılındığı gibi, erişilebilir ad uzunluğu 2048 karakterden uzun olamaz. Otomatik erişilebilir ad belirleme için kullanılan bir dize bu sınırı aşarsa, erişilebilir ad bu noktada kesilir.

Resimler için erişilebilir adlar

Ekran okuyucuları desteklemek ve kullanıcı arabirimindeki her öğe için temel tanımlayıcı bilgileri sağlamak için, bazen resimler ve grafikler gibi metinsel olmayan bilgilere (tamamen dekoratif veya yapısal öğeler hariç) metin alternatifleri sağlamanız gerekir. Bu öğelerin iç metni olmadığından erişilebilir ad hesaplanmış bir değere sahip olmaz. Bu örnekte gösterildiği gibi iliştirilmiş AutomationProperties.Name özelliğini ayarlayarak erişilebilir adı doğrudan ayarlayabilirsiniz.

XAML

<!-- Comment -->
<Image Source="product.png"
  AutomationProperties.Name="An image of a customer using the product."/>

Alternatif olarak, görünür kullanıcı arabiriminde görünen ve resim içeriği için etiketle ilişkili erişilebilirlik bilgileri olarak da hizmet veren bir metin başlığı eklemeyi göz önünde bulundurun. İşte bir örnek:

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>

Etiketler ve LabeledBy

Bir etiketi form öğesiyle ilişkilendirmenin tercih edilen yolu, etiket metni için x:Name ile TextBlock kullanmak ve ardından form öğesinin AutomationProperties.LabeledBy iliştirilmiş özelliğini, XAML adıyla TextBlock'e referans alınacak şekilde ayarlamaktır. Bu düzeni kullanırsanız, yardımcı teknolojiler etiket metnini form alanı için erişilebilir ad olarak kullanabilir. Bu tekniği gösteren bir örnek aşağıda verilmiştir.

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>

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

Erişilebilir bir açıklama, belirli bir kullanıcı arabirimi öğesi hakkında ek erişilebilirlik bilgileri sağlar. Yalnızca erişilebilir bir ad bir öğenin amacını yeterince ifade etmediğinde genellikle erişilebilir bir açıklama sağlarsınız.

Ekran Okuyucusu, yalnızca kullanıcı CapsLock+F tuşlarına basarak öğe hakkında daha fazla bilgi istediğinde öğenin erişilebilir açıklamasını okur.

Erişilebilir ad, davranışını tam olarak belgelemek yerine denetimi tanımlamak için tasarlanır. Denetimi açıklamak için kısa bir açıklama yeterli değilse, AutomationProperties.Name ek olarak AutomationProperties.HelpText ekli özelliğini de ayarlayabilirsiniz.

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

Sonuç olarak, ekran okuyucuları desteklemek için en iyi yaklaşım, uygulamanızı bir ekran okuyucu kullanarak kendiniz test etmektir. Bu, ekran okuyucunun nasıl davrandığını ve uygulamada hangi temel erişilebilirlik bilgilerinin eksik olabileceğini gösterir. Ardından kullanıcı arabirimi veya UI Otomasyonu özellik değerlerini buna göre ayarlayabilirsiniz. Daha fazla bilgi için bkz . Erişilebilirlik testi.

Erişilebilirliği test etme için kullanabileceğiniz araçlardan biri AccScope olarak adlandırılır. AccScope aracı özellikle yararlıdır çünkü yardımcı teknolojilerin uygulamanızı otomasyon ağacı olarak nasıl görüntüleyebileceğini gösteren kullanıcı arabiriminizin görsel gösterimlerini görebilirsiniz. Özellikle, Ekran Okuyucusu'nun uygulamanızdan nasıl metin aldığına ve kullanıcı arabirimindeki öğeleri nasıl düzenlediğine ilişkin bir görünüm sağlayan bir Ekran Okuyucusu modu vardır. AccScope, ön tasarım aşamasında bile bir uygulama için geliştirme döngüsü boyunca kullanılabilmesi ve yararlı olabilmesi için tasarlanmıştır. Daha fazla bilgi için bkz. AccScope.

Dinamik verilerden erişilebilir adlar

Windows, veri bağlama olarak bilinen bir özellik aracılığıyla ilişkili bir veri kaynağından gelen değerleri görüntülemek için kullanılabilecek birçok denetimi destekler. Listeleri veri öğeleriyle doldururken, ilk liste dolduruldıktan sonra veriye bağlı liste öğeleri için erişilebilir adları ayarlayan bir teknik kullanmanız gerekebilir. Daha fazla bilgi için XAML erişilebilirlik örneğindeki "Senaryo 4" bölümüne bakın.

Erişilebilir adlar ve yerelleştirme

Erişilebilir adın aynı zamanda yerelleştirilmiş bir öğe olduğundan emin olmak için, yerelleştirilebilir dizeleri kaynak olarak depolamak ve ardından x:Uid yönerge değerleriyle kaynak bağlantılarına başvurmak için doğru teknikleri kullanmalısınız. Erişilebilir ad açıkça ayarlanmış bir AutomationProperties.Name kullanımından geliyorsa, oradaki dizenin de yerelleştirilebilir olduğundan emin olun.

AutomationProperties özellikleri gibi ekli özelliklerin kaynak adı için özel bir niteleyici söz dizimi kullandığını, böylece kaynağın belirli bir öğeye uygulandığı şekilde ekli özelliğe başvurduğunu unutmayın. Örneğin, adlı bir kullanıcı arabirimi öğesine uygulanan kaynak adı: MediumButton.