.NET Framework'teki erişilebilirlikle ilgili yenilikler

.NET Framework, uygulamaları kullanıcılarınız için daha erişilebilir hale getirmeyi amaçlar. Erişilebilirlik özellikleri, bir uygulamanın Yardımcı Teknoloji kullanıcıları için uygun bir deneyim sunmasına olanak sağlar. .NET Framework 4.7.1'den başlayarak .NET Framework, geliştiricilerin erişilebilir uygulamalar oluşturmasına olanak sağlayan çok sayıda erişilebilirlik iyileştirmesi içerir.

Erişilebilirlik anahtarları

Uygulamanızı .NET Framework 4.7 veya önceki bir sürümü hedeflese ancak .NET Framework 4.7.1 veya sonraki bir sürümde çalışıyorsa erişilebilirlik özelliklerini kabul etmek üzere yapılandırabilirsiniz. Uygulamanızı .NET Framework 4.7.1 veya sonraki bir sürümü hedeflediyse eski özellikleri kullanacak şekilde de yapılandırabilirsiniz (erişilebilirlik özelliklerinden yararlanmaz). Erişilebilirlik özellikleri içeren her .NET Framework sürümünün, uygulamanın yapılandırma dosyasının <AppContextSwitchOverrides> bölümündeki öğesine <runtime> eklediğiniz sürüme özgü bir erişilebilirlik anahtarı vardır. Desteklenen anahtarlar şunlardır:

Sürüm Switch
.NET Framework 4.7.1 "Switch.UseLegacyAccessibilityFeatures"
.NET Framework 4.7.2 "Switch.UseLegacyAccessibilityFeatures.2"
.NET Framework 4.8 "Switch.UseLegacyAccessibilityFeatures.3"
.NET Framework 4.8 için 11 Ağustos 2020 KB4569746 Toplu Güncelleştirmesi "Switch.UseLegacyAccessibilityFeatures.4"
.NET Framework 4.8.1 "Switch.UseLegacyAccessibilityFeatures.5"

Erişilebilirlik geliştirmelerinden yararlanma

.NET Framework 4.7.1 veya sonraki sürümleri hedefleyen uygulamalar için yeni erişilebilirlik özellikleri varsayılan olarak etkinleştirilir. Buna ek olarak, .NET Framework'ün önceki bir sürümünü hedefleyen ancak .NET Framework 4.7.1 veya sonraki sürümlerinde çalışan uygulamalar, uygulamanın yapılandırma dosyasının bölümündeki öğesine <runtime> anahtar <AppContextSwitchOverrides> ekleyerek ve değerlerini falseolarak ayarlayarak eski erişilebilirlik davranışlarından vazgeçebilir (ve böylece erişilebilirlik geliştirmelerinden yararlanabilir). Aşağıdaki kod parçacığı, .NET Framework 4.7.1'de sunulan erişilebilirlik geliştirmelerini nasıl kabul etmek istediğiniz gösterilmektedir:

<runtime>
    <!-- AppContextSwitchOverrides value attribute is in the form of key1=true|false;key2=true|false  -->
    <AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false" />
</runtime>

Daha sonraki bir .NET Framework sürümünde erişilebilirlik özelliklerini kabul etmeyi seçerseniz, önceki sürümlerdeki özellikleri de açıkça kabul etmeniz gerekir. Uygulamanızı hem .NET Framework 4.7.1 hem de 4.7.2'deki erişilebilirlik geliştirmelerinden yararlanacak şekilde yapılandırmak için aşağıdaki <AppContextSwitchOverrides> öğeyi ekleyin:

<runtime>
    <!-- AppContextSwitchOverrides value attribute is in the form of key1=true|false;key2=true|false  -->
    <AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false" />
</runtime>

Uygulamanızı .NET Framework 4.7.1, 4.7.2, 4.8 ve .NET Framework 4.8 için Ağustos 2020 toplu güncelleştirmesindeki erişilebilirlik iyileştirmelerinden yararlanacak şekilde yapılandırmak için aşağıdaki <AppContextSwitchOverrides> öğeyi ekleyin:

<runtime>
    <!-- AppContextSwitchOverrides value attribute is in the form of key1=true|false;key2=true|false  -->
    <AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false;Switch.UseLegacyAccessibilityFeatures.3=false;Switch.UseLegacyAccessibilityFeatures.4=false"/>
</runtime>

Eski davranışı geri yükleme

.NET Framework'ün 4.7.1 ile başlayan sürümlerini hedefleyen uygulamalar, uygulamanın yapılandırma dosyasının <AppContextSwitchOverrides> bölümündeki öğesine <runtime> anahtar ekleyerek ve değerlerini trueolarak ayarlayarak erişilebilirlik özelliklerini devre dışı bırakabilir. Örneğin, aşağıdaki yapılandırma .NET Framework 4.7.2'de sunulan erişilebilirlik özelliklerini geri çevirmektedir:

<runtime>
    <!-- AppContextSwitchOverrides value attribute is in the form of key1=true|false;key2=true|false  -->
    <AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures.2=true" />
</runtime>

.NET Framework 4.8.1'de erişilebilirlikle ilgili yenilikler

.NET Framework 4.8.1 aşağıdaki alanlarda yeni erişilebilirlik özellikleri içerir:

Windows Forms

UiA gösterimleri eklendi ve geliştirildi

.NET Framework 4.8.1'in öncesinde, Windows Forms'un uygulamalarla etkileşime geçmek için yardımcı teknolojiyi desteklemeye yönelik çeşitli UIA desenleri desteği eksikti. Bu eksiklik Ekran Okuyucusu'nun veya diğer ekran okuyucuların eksik veya yanlış bilgileri bildirmesine neden olabilir. Ayrıca, imleci denetimdeki TextBox metinde hareket ettirme gibi önemli işlevleri de etkileyebilir. .NET Framework 4.8.1 ile, ortak denetimler için gerekli tüm desenler uygulanmıştır. Bu yeni işlevsellik, yardımcı teknoloji kullanıcılarına çok daha zengin bir uygulama etkileşimi deneyimi sağlar.

  • Denetime UIA genişletme/daraltma deseni DateTimePicker desteği eklendi.
  • Denetime MonthCalendar UIA desteği eklendi. Artık Ekran Okuyucusu gibi yardımcı teknoloji araçları denetimdeki tek tek tarihlerde gezinebilir.
  • , , PropertyGridMaskedTextBoxdüzenleme denetimiDataGridViewTextBoxCell, , ToolStripTextBoxve DomainUpDown denetimleri dahil olmak üzere TextBoxtüm metin tabanlı denetimler için uygulanan metin deseni desteği.
  • ToolTipartık Windows 11'de kalıcı, kapatılabilir ve üzerine gelinebilir olmak için WCAG2.1 yönergelerini izler. Araç ipucu davranışındaki değişiklikler .NET Framework 4.8.1 yüklü Windows 11 sistemleriyle sınırlıdır ve yalnızca araç ipucu için zaman aşımı ayarlanmamış uygulamalar için geçerlidir. Kalıcı olan araç ipuçları Esc tuşu veya Ctrl tuşuyla veya başka bir araç ipucu kümesiyle denetime giderek kapatılabilir.

Mevcut erişilebilirlik özellikleri için çeşitli hata düzeltmeleri

  • Ekran Okuyucusu artık boş DataGridView bir denetime odaklanabilir.
  • Denetimdeki sütun DataGridView sayısını duyururken ekran okuyucuların gizli sütunları saymasına neden olan sorun giderildi.
  • temel alınan formun 'dan DefaultFontfarklı bir özelliği varsa içinde DataGridviewCellStyle ayarlanan yazı tipi ayarlarını yoksaymasına neden DataGridView olan sorun Font giderildi.
  • Denetimin AccessibleName iç kaydırma çubuklarının DataGridView özelliği "ScrollBar" metnini kaldıracak şekilde güncelleştirildi.
  • Hücre seçildiğinde rengi DataGridViewLinkCell düzeltildi.
  • Özel DataGridView öğeler için sağlanmayan veya LocalizedControlType sağlanmayan ControlType özel DataGridViewCell denetimlerle ilgili bir sorun düzeltildi.
  • olarak ayarlanmış denetimler ToolStripRenderMode için ToolStripButton parlaklık oranı 3,5:1 olarak Systemgüncelleştirildi.
  • Öğe bir ToolStripToolStripComboBox tür olduğunda içindeki klavye gezintisi iyileştirildi.
  • Yüksek karşıtlık modunda arka ToolStripButton plan rengi güncelleştirildi.
  • için yardımcı teknolojiye ToolStripSeparatorbildirilen sınırlayıcı bir dikdörtgen olduğundan emin olun.
  • Denetimi okurken ekran okuyucu JAWS'un kilitlenmesine neden olabilen PropertyGrid bir sorun düzeltildi.
  • Gibi Font karmaşık bir giriş genişletildiğinde denetim PropertyGrid için UIA hiyerarşi ağacının güncelleştirildiğinden emin olun. Ayrıca, giriş daha sonra daraltıldığında ve artık görünür olmadığında ağacın düzgün güncelleştirildiğinden emin olun.
  • PropertyGrid kategorileri artık yerelleştirilmiş denetim türüne PropertyGrid categorysahiptir.
  • Windows için Erişilebilirlik Analizler altında uygulamanın kilitlenmesine neden olabilen bir sorun ComboBox düzeltildi.
  • için kenarlık rengi Button , varsayılan renklerde daha fazla karşıtlık olacak şekilde güncelleştirildi.
  • Ekranı kaplamış bir MDI alt formunun ControlBox düğmelerine erişmek için yardımcı teknoloji araçları etkinleştirildi.
  • Denetimin AccessibleNameDomainUpDown özelliği, boş bir dizenin yeni bir varsayılan değerine sahiptir. Boş dize, geliştiricileri önceki boş olmayan varsayılan değeri kabul etmek yerine anlamlı bir ad oluşturmaya teşvik eder.
  • AccessibleName Ekran okuyucular denetimi ve türünü duyururken yedekliliği önlemek için "Yazdır Düğmesi" içindeki Yazdır düğmesinin PrintPreviewDialog özelliği "Yazdır" olarak güncelleştirildi.
  • Türdeki ComboBox bir hücre kapatıldığında ve artık görünür olmadığında boş bir PropertyGrid liste öğesini kaldırmak için UIA liste denetimleri güncelleştirildi.

Windows Presentation Foundation (WPF)

Erişilebilir Araç ipucu işleme geliştirmeleri

Bu sürümde WPF, geçerli penceredeki bir araç ipucunun Esc tuşu, Ctrl tuşu (tek başına) veya Ctrl+Shift+F10 birleşimi kullanılarak kolayca kapatılabilmesini sağlayarak deneyimi geliştirdi. Esc anahtarının kapsamı bu sürümde yalnızca geçerli pencereye uygulanacak şekilde azaltıldı; daha önce uygulamadaki herhangi bir açık araç ipucuna uygulanmış olacaktı. Varsayılan olarak WPF araç ipuçları KALıCı, kapatılabilir ve üzerine gelinebilir olması için WCAG2.1 yönergelerini izler.

.NET Framework 4.8 için 11 Ağustos 2020 Toplu Güncelleştirmesi'nde erişilebilirlikle ilgili yenilikler

.NET Framework 4.8 için 11 Ağustos 2020 KB4569746 Toplu Güncelleştirmesi, Windows Forms'daki yeni erişilebilirlik özelliklerini içerir:

  • Denetim öğelerinin ve bir kategorinin ekran okuyucular tarafından genişletilmiş/daraltılmış durumunun duyurulma PropertyGrid sorununu giderir.

  • Denetimin erişilebilir desenlerini PropertyGrid ve iç öğelerini Güncelleştirmeler.

  • Denetim iç öğelerinin erişilebilir adlarını PropertyGrid ekran okuyucular tarafından doğru şekilde duyurulacak şekilde Güncelleştirmeler.

  • Denetimler için PropertyGridView sınırlayıcı dikdörtgen erişilebilir özelliklerini giderir.

  • Ekran okuyucuların birleşik giriş kutusu hücrelerinin genişletilmiş/daraltılmış durumunu doğru bir şekilde duyurmasını DataGridView sağlar.

.NET Framework 4.8'de erişilebilirlikle ilgili yenilikler

.NET Framework 4.8 aşağıdaki alanlarda yeni erişilebilirlik özellikleri içerir:

Windows Forms

.NET Framework 4.8'de, Windows Forms yaygın olarak kullanılan birçok denetime LiveRegions ve Notification Events desteği ekler. Ayrıca, kullanıcı klavyeyi kullanarak bir denetime gittiği zaman Araç İpuçları için destek de ekler.

Etiketlerde ve StatusStrip'lerde UIA LiveRegions Desteği

UIA LiveRegions, uygulama geliştiricilerinin kullanıcının çalıştığı konumdan ayrı bir denetimdeki metin değişikliğini ekran okuyuculara bildirmesine olanak tanır. Bu, örneğin bağlantı durumunu gösteren bir StatusStrip denetim için kullanışlıdır. Bağlantı bırakılırsa ve durum değişirse, geliştirici ekran okuyucuya bildirmek isteyebilir.

.NET Framework 4.8'den başlayarak, Windows Forms hem ve LabelStatusStrip denetimleri için UIA LiveRegions uygular. Örneğin, aşağıdaki kod adlı label1bir Label denetimde LiveRegion kullanır:

public Form1()
{
   InitializeComponent();
   label1.AutomationLiveSetting = AutomationLiveSetting.Polite;
}

…
Label1.Text = "Ready!";

Ekran Okuyucusu, kullanıcının uygulamayla nerede etkileşimde bulunduğundan bağımsız olarak "Hazır" ifadesini duyurur.

LiveRegion olarak da uygulayabilirsiniz UserControl :

using System;
using System.Windows.Forms;
using System.Windows.Forms.Automation;

namespace WindowsFormsApplication
{
   public partial class UserControl1 : UserControl, IAutomationLiveRegion
   {
      public UserControl1()
      {
         InitializeComponent();
      }

      public AutomationLiveSetting AutomationLiveSetting { get; set; }
      private AutomationLiveSetting IAutomationLiveRegion.GetLiveSetting()
      {
         return this.AutomationLiveSetting;
      }

      protected override void OnTextChanged(EventArgs e)
      {
         base.OnTextChanged(e);
         AutomationNotifications.UiaRaiseLiveRegionChangedEvent(this.AccessibilityObject);
      }
   }
}

UIA bildirim olayları

Windows 10 Fall Creators Update'te sunulan UIA Bildirim olayı, uygulamanızın uia olayı oluşturmasına olanak tanır ve bu da Ekran Okuyucusu'nun kullanıcı arabiriminde ilgili denetime sahip olmanıza gerek kalmadan olayla birlikte sağladığınız metne göre bir duyuru yapmasına neden olur. Bazı senaryolarda bu, uygulamanızın erişilebilirliğini önemli ölçüde geliştirmenin basit bir yoludur. içinde, uzun sürebilecek bazı işlemlerin ilerleme durumunu bildirmek için de yararlı olabilir. UIA Bildirim Olayları hakkında daha fazla bilgi için bkz . Masaüstü uygulamanız yeni UI Bildirimi olayından yararlanabilir mi?.

Aşağıdaki örnek Notification olayını tetikler:

MethodInfo raiseMethod = typeof(AccessibleObject).GetMethod("RaiseAutomationNotification");
if (raiseMethod != null) {
   raiseMethod.Invoke(progressBar1.AccessibilityObject, new object[3] {/*Other*/ 4, /*All*/ 2, "The progress is 50%." });
}

Araç İpuçları klavye erişimi

.NET Framework 4.7.2 ve önceki sürümleri hedefleyen uygulamalarda, denetim araç ipucu yalnızca bir fare işaretçisini denetime taşıyarak açılacak şekilde tetiklenebilir. .NET Framework 4.8'den başlayarak, klavye kullanıcısı, değiştirici tuşları olan veya olmayan bir Sekme tuşu veya ok tuşları kullanarak denetimi odaklayarak denetimin araç ipucuna tetikleyebilir. Bu özel erişilebilirlik geliştirmesi için ek bir AppContext anahtarı gerekir:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
   <startup>
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
   </startup>
   <runtime>
      <!-- AppContextSwitchOverrides values are in the form of key1=true|false;key2=true|false  -->
      <!-- Please note that disabling Switch.UseLegacyAccessibilityFeatures, Switch.UseLegacyAccessibilityFeatures.2 and Switch.UseLegacyAccessibilityFeatures.3 is required to disable Switch.System.Windows.Forms.UseLegacyToolTipDisplay -->
      <AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false;Switch.UseLegacyAccessibilityFeatures.3=false;Switch.System.Windows.Forms.UseLegacyToolTipDisplay=false"/>
   </runtime>
</configuration>

Aşağıdaki şekilde, kullanıcı klavyeyle bir düğme seçtiğinde araç ipucu gösterilmektedir.

Screenshot of tooltip when user navigates to button with the keyboard.

Windows Presentation Foundation (WPF)

.NET Framework 4.8'den başlayarak WPF, bir dizi erişilebilirlik iyileştirmesi içerir.

Ekran ekran okuyucuları artık Daraltılmış veya Gizli görünürlüğü olan öğeleri duyurmaz

Daraltılmış veya gizli görünürlüğü olan öğeler artık ekran okuyucu tarafından duyurulmaz. Görünürlüğü Visibility.Collapsed olan öğeler içeren veya Visibility.Hidden kullanıcıya duyurulursa ekran okuyucular tarafından yanlış tanıtılabilir kullanıcı arabirimleri. .NET Framework 4.8'den başlayarak WPF artık UIAutomation ağacının Denetim Görünümü'nde daraltılmış veya gizli öğeler içermediğinden ekran okuyucular artık bu öğeleri duyuramayacaktır.

Adorner tabanlı olmayan metin seçimiyle kullanmak için SelectionTextBrush özelliği

.NET Framework 4.7.2'de WPF, Donatıcı katmanını kullanmadan çizim TextBox yapma ve PasswordBox metin seçimi özelliği ekledi. Bu senaryoda seçilen metnin ön plan rengi tarafından SystemColors.HighlightTextBrushdikte edildi.

.NET Framework 4.8, SelectionTextBrushgeliştiricilerin Donatıcı tabanlı olmayan metin seçimi kullanırken seçili metin için belirli fırçayı seçmesine olanak tanıyan yeni bir özelliği ekler. Bu özellik yalnızca TextBoxBasetüretilmiş denetimlerde ve PasswordBox Adorner tabanlı olmayan metin seçimi etkinleştirilmiş WPF uygulamalarında denetimde çalışır. Denetim üzerinde RichTextBox çalışmaz. Donatıcı tabanlı olmayan metin seçimi etkinleştirilmediyse, bu özellik yoksayılır.

Bu özelliği kullanmak için XAML kodunuza eklemeniz ve uygun fırçayı veya bağlamayı kullanmanız yeterlidir. Sonuçta elde edilen metin seçimi şöyle görünür:

Screenshot of the app running with the words Hello World selected.

uygun gördüğünüz herhangi bir arka plan ve ön plan renk bileşimi oluşturmak için ve SelectionTextBrush özelliklerinin kullanımını SelectionBrush birleştirebilirsiniz.

UIAutomation ControllerFor özelliği desteği

UIAutomation özelliği ControllerFor , bu özelliği destekleyen otomasyon öğesi tarafından yönetilen bir otomasyon öğeleri dizisi döndürür. Bu özellik genellikle Otomatik öneri erişilebilirliği için kullanılır. ControllerFor bir otomasyon öğesi uygulama kullanıcı arabiriminin veya masaüstünün bir veya daha fazla kesimini etkilediyse kullanılır. Aksi takdirde, denetim işleminin etkisini kullanıcı arabirimi öğeleriyle ilişkilendirmek zordur. Bu özellik, denetimlerin özelliği için bir değer ControllerFor sağlama özelliğini ekler.

.NET Framework 4.8, adlı yeni bir sanal yöntem GetControlledPeersCore()ekler. özelliği için bir değer sağlamak için ControllerFor bu yöntemi geçersiz kılmanız ve bu tarafından işlenen denetimler için bir List<AutomationPeer> döndürmeniz yeterlidir AutomationPeer:

public class AutoSuggestTextBox: TextBox
{
   protected override AutomationPeer OnCreateAutomationPeer()
   {
      return new AutoSuggestTextBoxAutomationPeer(this);
   }

   public ListBox SuggestionListBox;
}

internal class AutoSuggestTextBoxAutomationPeer : TextBoxAutomationPeer
{
   public AutoSuggestTextBoxAutomationPeer(AutoSuggestTextBox owner) : base(owner)
   {
   }

   protected override List<AutomationPeer> GetControlledPeersCore()
   {
      List<AutomationPeer> controlledPeers = new List<AutomationPeer>();
      AutoSuggestTextBox owner = Owner as AutoSuggestTextBox;
      controlledPeers.Add(UIElementAutomationPeer.CreatePeerForElement(owner.SuggestionListBox));
      return controlledPeers;
   }
}

Klavye erişimindeki araç ipuçları

.NET Framework 4.7.2 ve önceki sürümlerde araç ipuçları yalnızca kullanıcı fare imlecini bir denetimin üzerine getirdiğinde görüntülenir. .NET Framework 4.8'de araç ipuçları, klavye odağında ve klavye kısayolu aracılığıyla da görüntülenir.

Bu özelliği etkinleştirmek için bir uygulamanın ve AppContext anahtarlarını kullanarak .NET Framework 4.8'i hedeflemesi Switch.UseLegacyAccessibilityFeatures.3Switch.UseLegacyToolTipDisplay veya kabul etmesi gerekir. Aşağıda örnek bir uygulama yapılandırma dosyası verilmiştir:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <startup>
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
   </startup>
   <runtime>
      <AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false;Switch.UseLegacyAccessibilityFeatures.3=false;Switch.UseLegacyToolTipDisplay=false" />
   </runtime>
</configuration>

Etkinleştirildikten sonra, araç ipucu içeren tüm denetimler, denetim klavye odağını aldıktan sonra bunu görüntüler. Araç ipucu zaman içinde veya klavye odağı değiştiğinde kapatılabilir. Kullanıcılar, yeni bir klavye kısayolu olan Ctrl+Shift+F10 tuşlarını kullanarak araç ipucunun el ile de kapatılabilir. Araç ipucu kapatıldıktan sonra, aynı klavye kısayolu kullanılarak yeniden görüntülenebilir.

Not

DenetimlerdekiRibbon şerit araç ipuçları klavye odağında gösterilmez; yalnızca klavye kısayolu aracılığıyla gösterilir.

SizeOfSet ve PositionInSet UIAutomation özellikleri desteği eklendi

Windows 10, SizeOfSet bir kümedeki öğelerin sayısını açıklamak için uygulamalar tarafından kullanılan iki yeni UIAutomation özelliği ve PositionInSetkullanıma sunulmuştur. Ekran okuyucular gibi UIAutomation istemci uygulamaları daha sonra bu özellikler için bir uygulamayı sorgulayabilir ve uygulamanın kullanıcı arabiriminin doğru bir gösterimini duyurabilir.

.NET Framework 4.8'den başlayarak WPF, WPF uygulamalarında bu iki özelliği UIAutomation'da kullanıma sunar. Bu iki yolla gerçekleştirilebilir:

  • Bağımlılık özelliklerini kullanarak.

    WPF iki yeni bağımlılık özelliği AutomationProperties.SizeOfSet ekler ve AutomationProperties.PositionInSet. Bir geliştirici XAML kullanarak değerlerini ayarlayabilir:

    <Button AutomationProperties.SizeOfSet="3"
      AutomationProperties.PositionInSet="1">Button 1</Button>
    
    <Button AutomationProperties.SizeOfSet="3"
      AutomationProperties.PositionInSet="2">Button 2</Button>
    
    <Button AutomationProperties.SizeOfSet="3"
      AutomationProperties.PositionInSet="3">Button 3</Button>
    
  • AutomationPeer sanal yöntemlerini geçersiz kılarak.

    GetSizeOfSetCore() ve GetPositionInSetCore() sanal yöntemleri sınıfına AutomationPeer eklendi. Bir geliştirici, aşağıdaki örnekte gösterildiği gibi bu yöntemleri geçersiz kılarak ve PositionInSet değerlerini sağlayabilirSizeOfSet:

    public class MyButtonAutomationPeer : ButtonAutomationPeer
    {
      protected override int GetSizeOfSetCore()
      {
          // Call into your own logic to provide a value for SizeOfSet
          return CalculateSizeOfSet();
      }
    
      protected override int GetPositionInSetCore()
      {
          // Call into your own logic to provide a value for PositionInSet
          return CalculatePositionInSet();
      }
    }
    

Ayrıca, örneklerdeki ItemsControl öğeler geliştiricinin ek eylemi olmadan bu özellikler için otomatik olarak bir değer sağlar. gruplandırılmışsa ItemsControl , grup koleksiyonu bir küme olarak temsil edilir ve her grup ayrı bir küme olarak sayılır; bu gruptaki her öğe grubun içindeki konumunu ve grubun boyutunu sağlar. Otomatik değerler sanallaştırmadan etkilenmez. Bir öğe gerçekleştirilmese bile, kümenin toplam boyutuna doğru sayılır ve eşdüzey öğelerinin kümesindeki konumu etkiler.

Otomatik değerler yalnızca uygulama .NET Framework 4.8'i hedeflediyse sağlanır. .NET Framework'ün önceki bir sürümünü hedefleyen uygulamalar için, aşağıdaki App.config dosyasında gösterildiği gibi AppContext anahtarını ayarlayabilirsiniz:Switch.UseLegacyAccessibilityFeatures.3

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <startup>
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
   </startup>
   <runtime>
      <AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false;Switch.UseLegacyAccessibilityFeatures.3=false" />
   </runtime>
</configuration>

Windows Workflow Foundation (WF) iş akışı tasarımcısı

İş akışı tasarımcısı .NET Framework 4.8'de aşağıdaki değişiklikleri içerir:

  • Ekran Okuyucusu kullanan kullanıcılar FlowSwitch büyük/küçük harf etiketlerinde iyileştirmeler görür.

  • Ekran Okuyucusu kullanan kullanıcılar düğme açıklamalarında iyileştirmeler görür.

  • Yüksek Karşıtlık temalarını seçen kullanıcılar İş Akışı Tasarım Aracı ve denetimlerinin görünürlüğünde, öğeler arasındaki daha iyi karşıtlık oranları ve odak öğeleri için kullanılan daha belirgin seçim kutuları gibi iyileştirmeler görür.

Uygulamanız .NET Framework 4.7.2 veya önceki bir sürümü hedeflediyse, uygulama yapılandırma dosyanızda AppContext anahtarınıfalse olarak ayarlayarak Switch.UseLegacyAccessibilityFeatures.3bu değişiklikleri kabul edebilirsiniz. Daha fazla bilgi için bu makalenin Erişilebilirlik geliştirmelerinden yararlanma bölümüne bakın.

.NET Framework 4.7.2'de erişilebilirlikle ilgili yenilikler

.NET Framework 4.7.2 aşağıdaki alanlarda yeni erişilebilirlik özellikleri içerir:

Windows Forms

Yüksek Karşıtlık temalarında işletim sistemi tanımlı renkler

.NET Framework 4.7.2'den başlayarak Windows Forms, yüksek karşıtlık temalarında işletim sistemi tarafından tanımlanan renkleri kullanır. Bu, aşağıdaki denetimleri etkiler:

Ekran Okuyucusu geliştirmeleri

.NET Framework 4.7.2'den başlayarak Ekran Okuyucusu desteği aşağıdaki gibi geliştirilmiştir:

DataGridView geliştirmeleri

.NET Framework 4.7.2'den başlayarak, DataGridView denetim aşağıdaki erişilebilirlik iyileştirmelerini getirmiştir:

Geliştirilmiş görsel ipuçları

  • RadioButton Boş Text özelliği olan ve CheckBox denetimleri, odağı aldığında bir odak göstergesi görüntüler.

Geliştirilmiş Özellik Kılavuzu Desteği

  • Denetim PropertyGrid alt öğeleri artık özelliği için IsReadOnlyProperty yalnızca bir PropertyGrid öğesi etkinleştirildiğinde bir döndürürtrue.

  • Denetim PropertyGrid alt öğeleri yalnızca bir PropertyGrid öğesi kullanıcı tarafından değiştirilebildiğinde özelliği için IsEnabledProperty bir false döndürür.

Geliştirilmiş klavye gezintisi

Windows Presentation Foundation (WPF)

CheckBox ve RadioButton denetimlerine yapılan değişiklikler

.NET Framework 4.7.1 ve önceki sürümlerinde WPF System.Windows.Controls.CheckBox ve System.Windows.Controls.RadioButton denetimler tutarsız ve Klasik ve Yüksek Karşıtlık temalarında yanlış odak görsellerine sahiptir. Bu sorunlar, denetimlerde herhangi bir içerik ayarlanmadığı durumlarda oluşur. Bu, temalar arasındaki geçişin kafa karıştırıcı olmasını ve odak görselinin görülmesini zorlaştırabilir.

.NET Framework 4.7.2'de bu görseller artık temalar arasında daha tutarlıdır ve Klasik ve Yüksek Karşıtlık temalarında daha kolay görünür.

WPF uygulamasında barındırılan WinForms denetimleri

.NET Framework 4.7.1 ve önceki sürümlerde wpf uygulamasında barındırılan WinForms denetimi için, bu katmandaki ilk veya son denetim WPF ElementHost denetimiyse, kullanıcılar WinForms katmanından dışarı sekmeyle çıkamaz. .NET Framework 4.7.2'de kullanıcılar artık WinForms katmanından dışarı sekmeyle çıkabiliyor.

Ancak, winforms katmanından hiçbir zaman kaçmasına gerek olmayan odağı kullanan otomatik uygulamalar artık beklendiği gibi çalışmayabilir.

.NET Framework 4.7.1'de erişilebilirlikle ilgili yenilikler

.NET Framework 4.7.1 aşağıdaki alanlarda yeni erişilebilirlik özellikleri içerir:

Windows Presentation Foundation (WPF)

Ekran okuyucu geliştirmeleri

Erişilebilirlik geliştirmeleri etkinleştirilirse, .NET Framework 4.7.1 ekran okuyucuları etkileyen aşağıdaki geliştirmeleri içerir:

  • .NET Framework 4.7 ve önceki sürümlerinde denetimler ekran Expander okuyucular tarafından düğme olarak duyurulur. .NET Framework 4.7.1'den başlayarak, bunlar doğru şekilde genişletilebilir/daraltılabilir gruplar olarak duyurulur.

  • .NET Framework 4.7 ve önceki sürümlerinde, DataGridCell denetimler ekran okuyucular tarafından "özel" olarak duyuruldu. .NET Framework 4.7.1'den başlayarak, bunlar artık veri kılavuzu hücresi (yerelleştirilmiş) olarak doğru şekilde duyurulur.

  • .NET Framework 4.7.1'den başlayarak, ekran okuyucular düzenlenebilir ComboBoxbir öğesinin adını duyurur.

  • .NET Framework 4.7 ve önceki sürümlerinde denetimler PasswordBox "görünümde öğe yok" olarak duyurulur veya başka bir şekilde yanlış davranışlar gösterirdi. Bu sorun .NET Framework 4.7.1'den başlayarak düzeltildi.

UIAutomation LiveRegion desteği

Ekran Okuyucusu gibi ekran okuyucular, kullanıcıların genellikle odağı olan kullanıcı arabirimi içeriğinin metin okuma çıkışıyla bir uygulamanın kullanıcı arabirimi içeriğini okumasına yardımcı olur. Ancak, kullanıcı arabirimi öğesi değişirse ve odak kullanıcıya bildirilmezse ve önemli bilgileri kaçırabilir. Canlı bölgeler bu sorunu çözmeyi hedefler. Bir geliştirici, ekran okuyucuyu veya başka bir UIAutomation istemcisini kullanıcı arabirimi öğesinde önemli bir değişiklik yapıldığını bildirmek için bunları kullanabilir. Ardından ekran okuyucu, kullanıcıya bu değişikliği nasıl ve ne zaman bildireceğine karar verebilir.

Canlı bölgeleri desteklemek için WPF'ye aşağıdaki API'ler eklendi:

Aşağıdaki örnekte gösterildiği gibi, ilgilendiğiniz öğede AutomationProperties.LiveSetting özelliğini ayarlayarak LiveRegion oluşturabilirsiniz:

<TextBlock Name="myTextBlock" AutomationProperties.LiveSetting="Assertive">announcement</TextBlock>

Canlı bölgedeki veriler değiştiğinde ve ekran okuyucuyu bilgilendirmeniz gerektiğinde, aşağıdaki örnekte gösterildiği gibi açıkça bir olay oluşturursunuz.

var peer = FrameworkElementAutomationPeer.FromElement(myTextBlock);

peer.RaiseAutomationEvent(AutomationEvents.LiveRegionChanged);
Dim peer = FrameworkElementAutomationPeer.FromElement(myTextBlock)
peer.RaiseAutomationEvent(AutomationEvents.LiveRegionChanged)

Yüksek karşıtlık

.NET Framework 4.7.1'den başlayarak, çeşitli WPF denetimlerinde yüksek karşıtlıkta geliştirmeler yapılmıştır. Tema ayarlandığında artık görünür HighContrast durumdadırlar. Bu modüller şunlardır:

  • Expander denetimi

    Denetimin odak görseli Expander artık görünür durumdadır. içinListBox klavye görselleri ComboBoxve RadioButton denetimleri de görünür. Örneğin:

    Önce:

    Screenshot of the expander control with focus and no focus visual.

    Sonra:

    Screenshot of the expander control with focus showing a dotted line around the control's text.

  • CheckBox ve RadioButton denetimleri

    ve RadioButton denetimlerindeki CheckBox metinler artık yüksek karşıtlıklı temalarda seçildiğinde daha kolay görülebilir. Örneğin:

    Önce:

    Screenshot of radio and check buttons with poor text visibility on high contrast themes.

    Sonra:

    Screenshot of radio and check buttons with better text visibility on high contrast themes.

  • ComboBox denetimi

    .NET Framework 4.7.1'den başlayarak, devre dışı bırakılmış bir denetimin kenarlığı devre dışı ComboBox bırakılmış metinle aynı renktedir. Örneğin:

    Önce:

    Screenshot of a disabled ComboBox with border and control text in different colors.

    Sonra:

    Screenshot of a disabled ComboBox with border the same color as the control text.

    Buna ek olarak, devre dışı ve odaklanmış düğmeler doğru tema rengini kullanır.

    Önce:

    Screenshot of a black button with gray text saying Focus Me.

    Sonra:

    Screenshot of a blue button with black text saying Focus Me.

    Son olarak, .NET Framework 4.7 ve önceki sürümlerde, açılan okun görünmez olmasına neden olacak Toolbar.ComboBoxStyleKey bir ComboBox denetimin stilini ayarlamak. Bu sorun .NET Framework 4.7.1'den başlayarak düzeltildi. Örneğin:

    Önce:

    Screenshot of a ComboBox control with an invisible drop-down arrow.

    Sonra:

    Screenshot of a ComBoxBox control displaying the drop-down arrow.

  • DataGrid denetimi

    .NET Framework 4.7.1'den başlayarak, denetimlerdeki DataGrid sıralama göstergesi oku artık doğru tema renklerini kullanıyor. Örneğin:

    Önce:

    Screenshot of sort indicator arrow before improvements.

    Sonra:

    Screenshot of sort indicator arrow after improvements.

    Buna ek olarak, .NET Framework 4.7 ve önceki sürümlerde, yüksek karşıtlık modlarında varsayılan bağlantı stili fare üzerinde yanlış bir renge dönüştü. Bu, .NET Framework 4.7.1'den başlayarak çözülür. Benzer şekilde, DataGrid onay kutusu sütunları .NET Framework 4.7.1 ile başlayarak klavye odağı geri bildirimi için beklenen renkleri kullanır.

    Önce:

    Screenshot of a link saying Click Me! in red.

    Sonra:

    Screenshot of a link saying Click Me! in yellow.

.NET Framework 4.7.1'deki WPF erişilebilirlik geliştirmeleri hakkında daha fazla bilgi için bkz . WPF'de erişilebilirlik geliştirmeleri.

Windows Forms erişilebilirlik geliştirmeleri

.NET Framework 4.7.1'de Windows Forms (WinForms), aşağıdaki alanlarda erişilebilirlik değişiklikleri içerir.

Yüksek Karşıtlık modunda geliştirilmiş ekran

.NET Framework 4.7.1'den başlayarak, çeşitli WinForms denetimleri işletim sisteminde bulunan HighContrast modlarında geliştirilmiş işleme sunar. Windows 10 bazı yüksek karşıtlıklı sistem renklerinin değerlerini değiştirmiştir ve Windows Forms, Windows 10 Win32 çerçevesini temel alır. En iyi deneyim için, Windows'un en son sürümünde çalıştırın ve bir test uygulamasına app.manifest dosyası ekleyerek en son işletim sistemi değişikliklerini kabul edin ve Windows 10 tarafından desteklenen işletim sistemi satırının açıklamasını kaldırarak aşağıdakilere bakın:

<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />

Yüksek karşıtlık değişikliklerine bazı örnekler şunlardır:

  • Öğelerdeki MenuStrip onay işaretlerini görüntülemek daha kolaydır.

  • Seçildiğinde, devre dışı bırakılan MenuStrip öğelerin görüntülenmesi daha kolaydır.

  • Seçili Button denetimdeki metin, seçim rengiyle karşıttır.

  • Devre dışı bırakılan metinleri okumak daha kolaydır. Örneğin:

    Önce:

    Screenshot of an app that uses different controls running in high contrast mode before accessibility improvements.

    Sonra:

    Screenshot of an app that uses different controls running in high contrast mode after accessibility improvements.

  • İş Parçacığı Özel Durum İletişim Kutusunda yüksek karşıtlık geliştirmeleri.

Geliştirilmiş Ekran Okuyucusu desteği

.NET Framework 4.7.1'deki Windows Forms, Ekran Okuyucusu için aşağıdaki erişilebilirlik iyileştirmelerini içerir:

  • Denetime MonthCalendar Ekran Okuyucusu ve diğer ui otomasyon araçları tarafından erişilebilir.

  • Denetim, CheckedListBox bir öğenin denetim durumu değiştiğinde Ekran Okuyucusu'na bildirimde bulunur, böylece kullanıcıya liste öğesinin değerini değiştirdiği bildirilir.

  • Denetim, DataGridViewCell Ekran Okuyucusu'na doğru salt okunur durumu bildirir.

  • Ekran Okuyucusu artık devre dışı bırakılmış ToolStripMenuItem metinleri okuyabilirken, daha önce devre dışı bırakılmış menü öğelerini atlar.

UIAutomation erişilebilirlik desenleri için gelişmiş destek

.NET Framework 4.7.1'den başlayarak, erişilebilirlik teknolojisi araçlarının geliştiricileri çeşitli WinForms denetimleri için yaygın API erişilebilirlik desenlerinden ve özelliklerinden yararlanabilir. Bu erişilebilirlik geliştirmeleri şunlardır:

Geliştirilmiş özellik tarayıcısı deneyimi

.NET Framework 4.7.1'den başlayarak Windows Forms şunları içerir:

  • Çeşitli açılan seçim pencerelerine daha iyi klavye gezintisi.
  • Gereksiz sekme duraklarının azaltılması.
  • Denetim türlerinin daha iyi raporlanması.
  • Geliştirilmiş ekran okuyucusu davranışı.

Web denetimlerini ASP.NET

.NET Framework 4.7.1 ve Visual Studio 2017 sürüm 15.3'den başlayarak, ASP.NET ASP.NET web denetimlerinin Visual Studio'daki erişilebilirlik teknolojisiyle nasıl çalıştığını geliştirir. Değişiklikler şunlardır:

  • Ayrıntılar Görünümü sihirbazındaki Alan Ekle iletişim kutusu veya ListView sihirbazının ListView'ı Yapılandır iletişim kutusu gibi denetimlerde eksik UI erişilebilirlik desenlerini uygulama değişiklikleri.

  • Veri Disk Belleği Alanları Düzenleyicisi gibi Yüksek Karşıtlık modunda görüntülemeyi iyileştirmeye yönelik değişiklikler.

  • DataPager denetiminin Sayfa Alanlarını Düzenle sihirbazındaki Alanlar iletişim kutusu, ObjectContext'i Yapılandır iletişim kutusu veya Veri Kaynağını Yapılandırma sihirbazının Veri Seçimini Yapılandır iletişim kutusu gibi denetimlerin klavye gezinti deneyimlerini iyileştirmeye yönelik değişiklikler.

.NET SDK Araçları

Yapılandırma Düzenleyicisi Aracı (SvcConfigEditor.exe) ve Hizmet İzleme Görüntüleyici Aracı (SvcTraceViewer.exe) çeşitli erişilebilirlik sorunları düzeltilerek geliştirilmiştir. Bunların çoğu, bir adın tanımlanmaması veya belirli UI otomasyon desenlerinin doğru uygulanmaması gibi küçük sorunlardı. Birçok kullanıcı bu yanlış değerlerin farkında olmasa da, ekran okuyucu gibi yardımcı teknolojiler kullanan müşteriler bu SDK araçlarını daha erişilebilir bulur.

Bu geliştirmeler klavye odak sırası gibi önceki bazı davranışları değiştirir.

Windows Workflow Foundation (WF) İş Akışı Tasarım Aracı

İş Akışı Tasarım Aracı erişilebilirlik değişiklikleri aşağıdakileri içerir:

  • Bazı denetimlerde sekme sırası soldan sağa ve yukarıdan aşağıya doğru değişir:

  • Klavye aracılığıyla daha fazla işlev kullanılabilir:

    • Bir etkinliğin özellikleri düzenlenirken, özellik grupları ilk kez odaklandıklarında klavyeyle daraltılabilir.

    • Uyarı simgelerine klavyeyle erişilebilir.

    • Özellikler penceresindeki Diğer Özellikler düğmesine klavyeyle erişilebilir.

    • Klavye kullanıcıları, İş Akışı Tasarım Aracı Bağımsız Değişkenler ve Değişkenler bölmelerindeki üst bilgi öğelerine erişebilir.

  • Odaklanmış öğelerin görünürlüğü iyileştirildi, örneğin:

    • İş Akışı Tasarım Aracı ve etkinlik tasarımcıları tarafından kullanılan veri kılavuzlarına satır ekleme.

    • ve SendReply etkinliklerindeki ReceiveReply alanlar arasında sekme tuşuyla gezinme.

    • Değişkenler veya bağımsız değişkenler için varsayılan değerleri ayarlama

  • Ekran okuyucular artık doğru şekilde tanıyabilir:

    • İş akışı tasarımcısında ayarlanan kesme noktaları.

    • FlowSwitch<T>, FlowDecisionve CorrelationScope etkinlikleri.

    • Etkinliğin Receive içeriği.

    • Etkinliğin InvokeMethod Hedef Türü.

    • Etkinlikteki Özel Durum birleşik giriş kutusu ve Finally bölümü TryCatch .

    • İleti Türü birleşik giriş kutusu, Bağıntı Başlatıcıları Ekle penceresindeki bölücü, İçerik Tanımı penceresi ve mesajlaşma etkinliklerindeki CorrelatesOn Tanımı penceresi (Receive, Send, SendReplyve ReceiveReply).

    • Durum makinesi geçişleri ve geçiş hedefleri.

    • Etkinliklerle ilgili FlowDecision ek açıklamalar ve bağlayıcılar.

    • Etkinlikler için bağlam (sağ tıklama) menüleri.

    • Özellik değeri düzenleyicileri, Aramayı Temizle düğmesi, Kategoriye göre ve Alfabetik sıralama düğmeleri ve özellikler kılavuzundaki İfade Düzenleyicisi iletişim kutusu.

    • İş Akışı Tasarım Aracı yakınlaştırma yüzdesi.

    • ve Pick etkinliklerindeki Parallel ayırıcı.

    • Etkinlik InvokeDelegate .

    • Sözlük etkinlikleri (Microsoft.Activities.AddToDictionary<TKey,TValue>, vb Microsoft.Activities.RemoveFromDictionary<TKey,TValue>.) için Türleri Seç penceresi.

    • Gözat ve .NET Türünü Seç penceresi.

    • İş Akışı Tasarım Aracı içerik haritaları.

  • Yüksek Karşıtlık temalarını seçen kullanıcılar, İş Akışı Tasarım Aracı ve denetimlerinin görünürlüğünde öğeler arasındaki karşıtlık oranları ve odak öğeleri için kullanılan daha belirgin seçim kutuları gibi birçok geliştirme görür.

Ayrıca bkz.