Apa yang baru dalam aksesibilitas di .NET Framework

.NET Framework bertujuan untuk membuat aplikasi lebih mudah diakses oleh pengguna Anda. Fitur aksesibilitas memungkinkan aplikasi memberikan pengalaman yang cocok bagi pengguna Teknologi Bantuan. Dimulai dengan .NET Framework 4.7.1, .NET Framework mencakup sejumlah besar peningkatan aksesibilitas yang memungkinkan pengembang membuat aplikasi yang dapat diakses.

Sakelar aksesibilitas

Anda dapat mengonfigurasi aplikasi Anda untuk ikut serta dalam fitur aksesibilitas jika menargetkan .NET Framework 4.7 atau versi sebelumnya tetapi berjalan di .NET Framework 4.7.1 atau yang lebih baru. Anda juga dapat mengonfigurasi aplikasi Anda untuk menggunakan fitur lama (dan tidak memanfaatkan fitur aksesibilitas) jika menargetkan .NET Framework 4.7.1 atau yang lebih baru. Setiap versi .NET Framework yang menyertakan fitur aksesibilitas memiliki sakelar aksesibilitas khusus versi tertentu, yang Anda tambahkan ke elemen <AppContextSwitchOverrides> di bagian <runtime> dari file konfigurasi aplikasi. Berikut ini adalah sakelar yang didukung:

Versi Mengalihkan
.NET Framework 4.7.1 "Switch.UseLegacyAccessibilityFeatures"
.NET Framework 4.7.2 "Switch.UseLegacyAccessibilityFeatures.2"
.NET Framework 4.8 "Switch.UseLegacyAccessibilityFeatures.3"
11 Agustus 2020-KB4569746 Pembaruan Kumulatif untuk .NET Framework 4.8 "Switch.UseLegacyAccessibilityFeatures.4"
.NET Framework 4.8.1 "Switch.UseLegacyAccessibilityFeatures.5"

Memanfaatkan peningkatan aksesibilitas

Fitur aksesibilitas baru diaktifkan secara default untuk aplikasi yang menargetkan .NET Framework 4.7.1 atau yang lebih baru. Selain itu, aplikasi yang menargetkan versi .NET Framework sebelumnya tetapi berjalan di .NET Framework 4.7.1 atau yang lebih baru dapat keluar dari perilaku aksesibilitas lama (dan dengan demikian memanfaatkan peningkatan aksesibilitas) dengan menambahkan sakelar ke elemen <AppContextSwitchOverrides> di bagian <runtime> dari file konfigurasi aplikasi dan mengatur nilainya ke false. Cuplikan berikut menunjukkan cara ikut serta dalam peningkatan aksesibilitas yang diperkenalkan di .NET Framework 4.7.1:

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

Jika Anda memilih untuk ikut serta ke fitur aksesibilitas di versi .NET Framework yang lebih baru, Anda juga harus secara eksplisit masuk pada fitur dari versi yang lebih lama. Untuk mengonfigurasi aplikasi Anda untuk memanfaatkan peningkatan aksesibilitas di .NET Framework 4.7.1 dan 4.7.2, tambahkan elemen berikut <AppContextSwitchOverrides> :

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

Untuk mengonfigurasi aplikasi Anda untuk memanfaatkan peningkatan aksesibilitas di .NET Framework 4.7.1, 4.7.2, 4.8, dan pembaruan kumulatif Agustus 2020 untuk .NET Framework 4.8, tambahkan elemen <AppContextSwitchOverrides> berikut:

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

Memulihkan perilaku lama

Aplikasi yang menargetkan versi .NET Framework yang dimulai dengan 4.7.1 dapat menonaktifkan fitur aksesibilitas dengan menambahkan sakelar ke elemen <AppContextSwitchOverrides> di bagian <runtime> dari file konfigurasi aplikasi dan mengatur nilainya ke true. Misalnya, konfigurasi berikut keluar dari fitur aksesibilitas yang diperkenalkan di .NET Framework 4.7.2:

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

Apa yang baru dalam aksesibilitas di .NET Framework 4.8.1

.NET Framework 4.8.1 menyertakan fitur aksesibilitas baru di area berikut:

Formulir Windows

Menambahkan dan meningkatkan representasi UIA

Sebelum .NET Framework 4.8.1, Formulir Windows kehilangan dukungan untuk berbagai pola UIA untuk mendukung teknologi bantuan untuk berinteraksi dengan aplikasi. Kekurangan ini dapat menyebabkan Narator atau pembaca layar lainnya melaporkan informasi yang tidak lengkap atau salah. Ini juga dapat memengaruhi fungsionalitas penting seperti memindahkan kursor melalui teks dalam TextBox kontrol. Dengan .NET Framework 4.8.1, semua pola yang diperlukan untuk kontrol umum telah diterapkan. Fungsionalitas baru ini memberi pengguna teknologi bantuan pengalaman interaksi aplikasi yang jauh lebih kaya.

  • Menambahkan dukungan untuk pola perluas/ciutkan UIA ke DateTimePicker kontrol.
  • Menambahkan dukungan UIA ke MonthCalendar kontrol. Sekarang alat teknologi bantuan seperti Narator dapat menavigasi melalui tanggal individu dalam kontrol.
  • Dukungan pola teks yang diimplementasikan untuk semua kontrol berbasis teks, termasuk TextBoxkontrol , , PropertyGridMaskedTextBoxedit, DataGridViewTextBoxCell, ToolStripTextBox, dan DomainUpDown .
  • ToolTip sekarang mengikuti pedoman WCAG2.1 agar persisten, dapat dimatikan, dan dapat diarahkan pada Windows 11. Perubahan pada perilaku tipsalat terbatas pada sistem Windows 11 yang menginstal .NET Framework 4.8.1, dan hanya berlaku untuk aplikasi di mana batas waktu tidak diatur untuk tipsalat. Tipsalat yang bertahan dapat ditutup dengan kunci Esc atau kunci Ctrl atau dengan menavigasi ke kontrol dengan set tipsalat lain.

Berbagai perbaikan bug untuk fitur aksesibilitas yang ada

  • Narator sekarang dapat fokus pada kontrol kosong DataGridView .
  • Mengatasi masalah yang menyebabkan pembaca layar menghitung kolom tersembunyi saat mengumumkan jumlah kolom dalam DataGridView kontrol.
  • Mengatasi masalah yang menyebabkan DataGridView abaikan pengaturan font yang diatur dalam DataGridviewCellStyle jika formulir yang mendasar memiliki Font properti yang berbeda dari DefaultFont.
  • AccessibleName Memperbarui properti bilah DataGridView gulir internal kontrol untuk menghapus teks "ScrollBar".
  • Memperbaiki warna saat DataGridViewLinkCell sel dipilih.
  • Memperbaiki masalah dengan kontrol kustom DataGridView di mana tidak ControlType ada atau LocalizedControlType disediakan untuk elemen kustom DataGridViewCell .
  • Memperbarui rasio luminositas ke 3,5:1 untuk ToolStripButton kontrol yang telah ToolStripRenderMode diatur ke System.
  • Navigasi keyboard yang disempurnakan ToolStrip saat elemen adalah jenis ToolStripComboBox .
  • Memperbarui warna ToolStripButton latar belakang dalam mode kontras tinggi.
  • Memastikan bahwa ada persegi panjang pembatas yang dilaporkan ke teknologi bantuan untuk ToolStripSeparator.
  • Memperbaiki masalah yang dapat menyebabkan JAWS pembaca layar mengalami crash saat membaca PropertyGrid kontrol.
  • Memastikan bahwa pohon hierarki UIA untuk PropertyGrid kontrol diperbarui ketika entri kompleks seperti Font diperluas. Pastikan juga bahwa pohon diperbarui dengan benar ketika entri kemudian diciutkan dan tidak lagi terlihat.
  • PropertyGrid kategori sekarang memiliki jenis kontrol yang dilokalkan dari PropertyGrid category.
  • Memperbaiki masalah dengan ComboBox yang dapat menyebabkan aplikasi mengalami crash di bawah Accessibility Insights untuk Windows.
  • Memperbarui warna batas agar Button memiliki lebih banyak kontras dalam warna default.
  • Mengaktifkan alat teknologi bantuan untuk mengakses ControlBox tombol bentuk anak MDI yang dimaksimalkan.
  • Properti AccessibleNameDomainUpDown kontrol memiliki nilai default baru dari string kosong. String kosong akan mendorong pengembang untuk membuat nama yang bermakna daripada menerima nilai default yang tidak kosong sebelumnya.
  • AccessibleName Memperbarui properti tombol Cetak di PrintPreviewDialog dari "Tombol Cetak" ke "Cetak" untuk menghindari redundansi ketika pembaca layar mengumumkan kontrol dan jenisnya.
  • Kontrol daftar UIA yang diperbarui untuk menghapus elemen daftar kosong saat PropertyGrid sel jenis ComboBox ditutup dan tidak lagi terlihat.

Windows Presentation Foundation (WPF)

Peningkatan penanganan Tooltip yang Dapat Diakses

Dalam rilis ini, WPF meningkatkan pengalaman dengan memastikan bahwa tipsalat di jendela saat ini dapat dengan mudah dimatikan dengan menggunakan kunci Esc, tombol Ctrl (dengan sendirinya), atau dengan kombinasi Ctrl+Shift+F10. Cakupan kunci Esc dikurangi dalam rilis ini untuk diterapkan hanya ke jendela saat ini, ketika sebelumnya akan diterapkan ke tipsalat terbuka apa pun dalam aplikasi. Secara default, tipsalat WPF akan mengikuti panduan WCAG2.1 agar persisten, dapat dihentikan, dan dapat diarahkan.

Apa yang baru dalam aksesibilitas di Pembaruan Kumulatif 11 Agustus 2020 untuk .NET Framework 4.8

Pembaruan kumulatif 11 Agustus 2020-KB4569746 untuk .NET Framework 4.8 mencakup fitur aksesibilitas baru di Formulir Windows:

  • Mengatasi masalah dengan mengumumkan item kontrol PropertyGrid dan status kategori diperluas/diciutkan oleh pembaca layar.

  • Memperbarui pola yang dapat diakses dari kontrol PropertyGrid dan elemen dalamnya.

  • Memperbarui nama yang dapat diakses dari elemen dalam kontrol PropertyGrid sehingga diumumkan dengan benar oleh pembaca layar.

  • Menunjukkan properti pembatas persegi panjang yang dapat diakses untuk kontrol PropertyGridView.

  • Memungkinkan pembaca layar mengumumkan dengan benar status diperluas/diciutkan dari sel kotak kombo DataGridView.

Apa yang baru dalam aksesibilitas di .NET Framework 4.8

.NET Framework 4.8 menyertakan fitur aksesibilitas baru di area berikut:

Formulir Windows

Di .NET Framework 4.8, Formulir Windows menambahkan dukungan untuk LiveRegions dan Peristiwa Pemberitahuan ke banyak kontrol yang umum digunakan. Formulir Windows juga menambahkan dukungan untuk ToolTips saat pengguna menavigasi ke kontrol dengan menggunakan keyboard.

Dukungan UIA LiveRegions di Label dan StatusStrip

UIA LiveRegions memungkinkan pengembang aplikasi untuk memberi tahu pembaca layar tentang perubahan teks dalam kontrol yang terletak terpisah dari lokasi tempat pengguna bekerja. Ini berguna, misalnya, untuk kontrol StatusStrip yang menunjukkan status sambungan. Jika koneksi terputus dan statusnya berubah, pengembang mungkin ingin memberi tahu pembaca layar.

Mulai dari .NET Framework 4.8, Formulir Windows mengimplementasikan UIA LiveRegions untuk kontrol Label dan StatusStrip. Misalnya, kode berikut menggunakan LiveRegion dalam kontrol Label bernama label1:

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

…
Label1.Text = "Ready!";

Narator mengumumkan "Siap" di mana pun pengguna berinteraksi dengan aplikasi.

Anda juga dapat menerapkan UserControl Anda sebagai LiveRegion:

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);
      }
   }
}

Peristiwa pemberitahuan UIA

Peristiwa Pemberitahuan UIA, yang diperkenalkan di Windows 10 Fall Creators Update, memungkinkan aplikasi Anda memunculkan peristiwa UIA, yang memungkinkan Narrator hanya membuat pengumuman berdasarkan teks yang Anda berikan dengan peristiwa tersebut, tanpa perlu memiliki kontrol yang sesuai di UI. Dalam beberapa skenario, ini adalah cara langsung untuk meningkatkan aksesibilitas aplikasi Anda secara dramatis. Ini juga dapat berguna untuk memberitahukan kemajuan beberapa proses yang mungkin membutuhkan waktu lama. Untuk informasi selengkapnya tentang Peristiwa Pemberitahuan UIA, lihat Dapatkah aplikasi desktop Anda memanfaatkan peristiwa Pemberitahuan UI baru?.

Contoh berikut memunculkan Peristiwa pemberitahuan:

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

ToolTips pada akses keyboard

Dalam aplikasi yang menargetkan .NET Framework 4.7.2 dan versi sebelumnya, kontrol tooltip hanya dapat dipicu untuk muncul dengan menggerakkan penunjuk mouse ke dalam kontrol. Mulai dari .NET Framework 4.8, pengguna keyboard dapat memicu kontrol tooltip dengan memfokuskan kontrol menggunakan tombol Tab atau tombol panah dengan atau tanpa tombol modifikasi. Peningkatan aksesibilitas khusus ini memerlukan AppContext switch tambahan:

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

Gambar berikut menunjukkan tooltip ketika pengguna telah memilih tombol dengan keyboard.

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

Windows Presentation Foundation (WPF)

Dimulai dengan .NET Framework 4.8, WPF menyertakan sejumlah peningkatan aksesibilitas.

Narator layar tidak lagi mengumumkan elemen dengan visibilitas Diciutkan atau Disembunyikan

Elemen dengan visibilitas yang diciutkan atau tersembunyi tidak lagi diumumkan oleh pembaca layar. Antarmuka pengguna yang berisi elemen dengan Visibilitas Visibility.Collapsed atau Visibility.Hidden dapat disalahartikan oleh pembaca layar jika diumumkan kepada pengguna. Mulai dari .NET Framework 4.8, WPF tidak lagi menyertakan elemen yang diciutkan atau tersembunyi di Tampilan Kontrol dari pohon UIAutomation, sehingga pembaca layar tidak lagi dapat mengumumkan elemen ini.

Properti SelectionTextBrush untuk digunakan dengan pilihan teks berbasis non-Adorner

Di .NET Framework 4.7.2, WPF menambahkan kemampuan untuk menggambar pilihan teks TextBox dan PasswordBox tanpa menggunakan lapisan Adorner. Warna latar depan teks yang dipilih dalam skenario ini ditentukan oleh SystemColors.HighlightTextBrush.

.NET Framework 4.8 menambahkan properti baru, SelectionTextBrush, yang memungkinkan pengembang memilih kuas khusus untuk teks yang dipilih saat menggunakan pilihan teks berbasis non-Adorner. Properti ini hanya berfungsi pada kontrol turunan TextBoxBase dan kontrol PasswordBox dalam aplikasi WPF dengan pilihan teks berbasis non-Adorner diaktifkan. Ini tidak berfungsi pada kontrol RichTextBox. Jika pemilihan teks berbasis non-Adorner tidak diaktifkan, properti ini akan diabaikan.

Untuk menggunakan properti ini, cukup tambahkan ke kode XAML Anda dan gunakan kuas atau penjilidan yang sesuai. Pilihan teks yang dihasilkan terlihat seperti ini:

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

Anda dapat menggabungkan penggunaan properti SelectionBrush dan SelectionTextBrush untuk menghasilkan kombinasi warna latar belakang dan latar depan yang Anda anggap sesuai.

Dukungan untuk properti UIAutomation ControllerFor

Properti ControllerFor UIAutomation mengembalikan larik elemen automasi yang dimanipulasi oleh elemen automasi yang mendukung properti ini. Properti ini biasanya digunakan untuk aksesibilitas Saran otomatis. ControllerFor digunakan saat elemen automasi memengaruhi satu atau beberapa segmen UI aplikasi atau desktop. Jika tidak, sulit untuk mengaitkan dampak operasi kontrol dengan elemen UI. Fitur ini menambahkan kemampuan kontrol untuk memberikan nilai bagi properti ControllerFor.

.NET Framework 4.8 menambahkan metode virtual baru, GetControlledPeersCore(). Untuk memberikan nilai bagi properti ControllerFor, cukup ambil alih metode ini dan kembalikan List<AutomationPeer> untuk kontrol yang dimanipulasi oleh AutomationPeer ini:

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

Tooltips pada akses keyboard

Di .NET Framework 4.7.2 dan versi sebelumnya, tooltips hanya ditampilkan saat pengguna mengarahkan kursor mouse ke kontrol. Di .NET Framework 4.8, tooltips juga ditampilkan pada fokus keyboard, serta melalui pintasan keyboard.

Untuk mengaktifkan fitur ini, aplikasi harus menargetkan .NET Framework 4.8 atau ikut serta menggunakan sakelar Switch.UseLegacyAccessibilityFeatures.3 dan Switch.UseLegacyToolTipDisplayAppContext. Berikut ini adalah contoh file konfigurasi aplikasi:

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

Setelah diaktifkan, semua kontrol yang berisi tooltip menampilkannya setelah kontrol menerima fokus keyboard. Tooltip dapat ditutup dari waktu ke waktu atau saat fokus keyboard berubah. Pengguna juga dapat menutup tipsalat secara manual dengan menggunakan pintasan keyboard baru, Ctrl+Shift+F10. Setelah tipsalat dimatikan, tipsalat dapat ditampilkan lagi dengan menggunakan pintasan keyboard yang sama.

Catatan

Tooltips pita pada kontrol Ribbon tidak akan ditampilkan pada fokus keyboard; hanya ditampilkan melalui pintasan keyboard.

Menambahkan Dukungan untuk properti SizeOfSet and PositionInSet UIAutomation

Windows 10 memperkenalkan dua properti UIAutomation baru, SizeOfSet dan PositionInSet, yang digunakan oleh aplikasi untuk menjelaskan jumlah item dalam satu set. Aplikasi klien UIAutomation seperti pembaca layar kemudian dapat meminta aplikasi untuk properti ini dan mengumumkan representasi akurat dari UI aplikasi.

Mulai dari .NET Framework 4.8, WPF mengekspos dua properti ini ke UIAutomation dalam aplikasi WPF. Ini dapat dicapai dengan dua cara:

  • Dengan menggunakan properti dependensi.

    WPF menambahkan dua properti dependensi baru, AutomationProperties.SizeOfSet dan AutomationProperties.PositionInSet. Pengembang dapat menggunakan XAML untuk menetapkan nilainya:

    <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>
    
  • Dengan mengganti metode virtual AutomationPeer.

    Metode GetSizeOfSetCore() virtual dan GetPositionInSetCore() ditambahkan ke AutomationPeer kelas . Pengembang dapat memberikan nilai untuk SizeOfSet dan PositionInSet dengan mengganti metode ini, seperti yang ditunjukkan pada contoh berikut:

    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();
      }
    }
    

Selain itu, item dalam instans ItemsControl memberikan nilai properti ini secara otomatis tanpa tindakan tambahan dari pengembang. Jika ItemsControl dikelompokkan, kumpulan grup direpresentasikan sebagai satu set, dan setiap grup dihitung sebagai set terpisah, dengan setiap item di dalam grup tersebut memberikan posisinya di dalam grup tersebut serta ukuran grup. Nilai otomatis tidak terpengaruh oleh virtualisasi. Bahkan jika suatu item tidak direalisasikan, item masih dihitung terhadap ukuran total set dan memengaruhi posisi di set item saudaranya.

Nilai otomatis hanya diberikan jika aplikasi menargetkan .NET Framework 4.8. Untuk aplikasi yang menargetkan versi .NET Framework yang lebih lama, Anda dapat mengatur Switch.UseLegacyAccessibilityFeatures.3saklar AppContext, seperti yang ditunjukkan dalam file App.config berikut:

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

Perancang alur kerja Windows Workflow Foundation (WF)

Perancang alur kerja menyertakan perubahan berikut di .NET Framework 4.8:

  • Pengguna yang menggunakan Narrator akan melihat peningkatan dalam label kasus FlowSwitch.

  • Pengguna yang menggunakan Narator akan melihat peningkatan dalam deskripsi tombol.

  • Pengguna yang memilih tema Kontras Tinggi akan melihat peningkatan dalam visibilitas Perancang Alur Kerja dan kontrolnya, seperti rasio kontras yang lebih baik antara elemen dan kotak pilihan yang lebih mencolok yang digunakan untuk elemen fokus.

Jika aplikasi Anda menargetkan .NET Framework 4.7.2 atau versi sebelumnya, Anda dapat ikut serta dalam perubahan ini dengan mengatur Switch.UseLegacyAccessibilityFeatures.3sakelar AppContext ke false di file konfigurasi aplikasi Anda. Untuk informasi lebih lanjut, lihat bagian Memanfaatkan peningkatan aksesibilitas dalam artikel ini.

Apa yang baru dalam aksesibilitas di .NET Framework 4.7.2

.NET Framework 4.7.2 menyertakan fitur aksesibilitas baru di area berikut:

Formulir Windows

Warna yang ditentukan OS dalam tema Kontras Tinggi

Mulai dari .NET Framework 4.7.2, Formulir Windows menggunakan warna yang ditentukan oleh sistem operasi dalam tema Kontras Tinggi. Warna memengaruhi kontrol berikut:

Peningkatan narator

Dimulai dengan .NET Framework 4.7.2, dukungan Narator ditingkatkan sebagai berikut:

Peningkatan DataGridView

Mulai dari .NET Framework 4.7.2, kontrol DataGridView telah memperkenalkan peningkatan aksesibilitas berikut:

Isyarat visual yang ditingkatkan

Peningkatan Dukungan Kisi Properti

Navigasi keyboard yang ditingkatkan

Windows Presentation Foundation (WPF)

Perubahan pada kontrol CheckBox dan RadioButton

Di .NET Framework 4.7.1 dan versi sebelumnya, kontrol WPF System.Windows.Controls.CheckBox dan System.Windows.Controls.RadioButton tidak konsisten dan, dalam tema Klasik dan Kontras Tinggi, visual fokus yang salah. Masalah ini terjadi dalam kasus kontrol tidak memiliki kumpulan konten apa pun. Masalah ini dapat membuat transisi di antara tema-tema membingungkan dan visual fokus sulit dilihat.

Di .NET Framework 4.7.2, visual ini sekarang lebih konsisten di seluruh tema dan lebih mudah terlihat di tema Klasik dan Kontras Tinggi.

Kontrol WinForms yang dihosting di aplikasi WPF

Untuk kontrol WinForms yang dihosting di aplikasi WPF di .NET Framework 4.7.1 dan versi sebelumnya, pengguna tidak dapat keluar dari lapisan WinForms jika kontrol pertama atau terakhir di lapisan itu adalah kontrol WPF ElementHost. Di .NET Framework 4.7.2, pengguna sekarang dapat keluar dari lapisan WinForms.

Namun, aplikasi otomatis yang mengandalkan fokus yang tidak pernah keluar dari lapisan WinForms mungkin tidak lagi berfungsi sebagaimana yang diharapkan.

Apa yang baru dalam aksesibilitas di .NET Framework 4.7.1

.NET Framework 4.7.1 menyertakan fitur aksesibilitas baru di area berikut:

Windows Presentation Foundation (WPF)

Peningkatan pembaca layar

Jika peningkatan aksesibilitas diaktifkan, .NET Framework 4.7.1 menyertakan peningkatan berikut yang memengaruhi pembaca layar:

  • Di .NET Framework 4.7 dan versi sebelumnya, kontrol Expander diumumkan oleh pembaca layar sebagai tombol. Mulai dari .NET Framework 4.7.1, kontrol diumumkan dengan benar sebagai grup yang dapat diperluas/diciutkan.

  • Di .NET Framework 4.7 dan versi sebelumnya, kontrol DataGridCell diumumkan oleh pembaca layar sebagai "kustom". Mulai dari .NET Framework 4.7.1, kontrol sekarang diumumkan dengan benar sebagai sel jaringan data (dilokalkan).

  • Mulai dari .NET Framework 4.7.1, pembaca layar mengumumkan nama ComboBox yang dapat diedit.

  • Di .NET Framework 4.7 dan versi sebelumnya, kontrol PasswordBox diumumkan sebagai "tidak ada item dalam tampilan" atau memiliki perilaku yang salah. Masalah ini telah diperbaiki dimulai dengan .NET Framework 4.7.1.

Dukungan LiveRegion UIAutomation

Pembaca layar seperti Narator membantu orang membaca konten UI aplikasi, biasanya dengan output teks ke ucapan dari konten UI yang memiliki fokus. Namun, jika elemen UI berubah dan tidak memiliki fokus, pengguna mungkin tidak diberi tahu dan mungkin melewatkan informasi penting. Wilayah hidup bertujuan untuk memecahkan masalah ini. Pengembang dapat menggunakannya untuk memberi tahu pembaca layar atau klien UIAutomation lainnya bahwa perubahan penting telah dilakukan pada elemen UI. Pembaca layar kemudian dapat memutuskan bagaimana dan kapan harus memberi tahu pengguna tentang perubahan ini.

Untuk mendukung wilayah langsung, API berikut telah ditambahkan ke WPF:

Anda dapat membuat LiveRegion dengan mengatur properti AutomationProperties.LiveSetting pada elemen yang diinginkan, seperti yang ditunjukkan pada contoh berikut:

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

Saat data di wilayah langsung berubah dan Anda perlu memberi tahu pembaca layar, Anda memunculkan peristiwa secara eksplisit, seperti yang ditunjukkan dalam contoh berikut.

var peer = FrameworkElementAutomationPeer.FromElement(myTextBlock);

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

Kontras tinggi

Dimulai dengan .NET Framework 4.7.1, peningkatan kontras tinggi telah dibuat di berbagai kontrol WPF. Kontrol WPF sekarang terlihat saat tema HighContrast diatur. Ini termasuk:

  • Kontrol Expander

    Visual fokus pada kontrol Expander sekarang terlihat. Visual keyboard pada kontrol ComboBox, ListBox, dan RadioButton juga terlihat. Misalnya:

    Sebelum:

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

    Setelah:

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

  • Kontrol CheckBox and RadioButton

    Teks di kontrol CheckBox dan RadioButton sekarang lebih mudah dilihat bila dipilih dalam tema kontras tinggi. Misalnya:

    Sebelum:

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

    Setelah:

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

  • Kontrol ComboBox

    Mulai dari .NET Framework 4.7.1, batas kontrol ComboBox yang dinonaktifkan berwarna sama dengan teks yang dinonaktifkan. Misalnya:

    Sebelum:

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

    Setelah:

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

    Selain itu, tombol yang dinonaktifkan dan fokus menggunakan warna tema yang benar.

    Sebelum:

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

    Setelah:

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

    Terakhir, di .NET Framework 4.7 dan versi sebelumnya, mengatur gaya kontrol ComboBox ke Toolbar.ComboBoxStyleKey menyebabkan menu menurun menjadi tidak terlihat. Masalah ini telah diperbaiki dimulai dengan .NET Framework 4.7.1. Misalnya:

    Sebelum:

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

    Setelah:

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

  • Kontrol DataGrid

    Mulai dari .NET Framework 4.7.1, panah indikator pengurutan di kontrol DataGrid sekarang menggunakan warna tema yang benar. Misalnya:

    Sebelum:

    Screenshot of sort indicator arrow before improvements.

    Setelah:

    Screenshot of sort indicator arrow after improvements.

    Selain itu, di .NET Framework 4.7 dan versi sebelumnya, gaya tautan default berubah menjadi warna yang salah saat mouse dalam mode kontras tinggi. Ini diperbaiki mulai dengan .NET Framework 4.7.1. Demikian pula, DataGrid kolom kotak centang menggunakan warna yang diharapkan untuk umpan balik fokus keyboard yang dimulai dengan .NET Framework 4.7.1.

    Sebelum:

    Screenshot of a link saying Click Me! in red.

    Setelah:

    Screenshot of a link saying Click Me! in yellow.

Untuk informasi selengkapnya tentang peningkatan aksesibilitas WPF di .NET Framework 4.7.1, lihat Peningkatan aksesibilitas di WPF.

Peningkatan aksesibilitas Windows Forms

Di .NET Framework 4.7.1, Windows Forms (WinForms) menyertakan perubahan aksesibilitas di area berikut.

Peningkatan tampilan dalam mode Kontras Tinggi

Mulai dari .NET Framework 4.7.1, berbagai kontrol WinForms menawarkan penyajian yang ditingkatkan dalam mode Kontras Tinggi yang tersedia di sistem operasi. Windows 10 telah mengubah nilai beberapa warna sistem kontras tinggi, dan Windows Forms didasarkan pada kerangka kerja Windows 10 Win32. Untuk pengalaman terbaik, jalankan pada versi terbaru Windows dan ikut serta dalam perubahan OS terbaru dengan menambahkan file app.manifest dalam aplikasi pengujian dan batalkan komentar baris OS yang didukung Windows 10 sehingga terlihat sebagai berikut:

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

Beberapa contoh perubahan kontras tinggi meliputi:

  • Tanda centang di item MenuStrip lebih mudah dilihat.

  • Saat dipilih, item MenuStrip yang dinonaktifkan lebih mudah dilihat.

  • Teks dalam kontrol Button yang dipilih kontras dengan warna pilihan.

  • Teks yang dinonaktifkan lebih mudah dibaca. Misalnya:

    Sebelum:

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

    Setelah:

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

  • Peningkatan kontras tinggi dalam Dialog Pengecualian Thread.

Dukungan Narator yang ditingkatkan

Formulir Windows di .NET Framework 4.7.1 menyertakan peningkatan aksesibilitas berikut untuk Narator:

  • Kontrol MonthCalendar dapat diakses oleh Narator, serta oleh alat automasi UI lainnya.

  • Kontrol CheckedListBox memberi tahu Narator saat status pemeriksaan item telah berubah sehingga pengguna diberi tahu bahwa mereka telah mengubah nilai item daftar.

  • Kontrol DataGridViewCell melaporkan status baca-saja yang benar ke Narator.

  • Narator sekarang dapat membaca teks ToolStripMenuItem yang dinonaktifkan, sedangkan sebelumnya akan melewati item menu yang dinonaktifkan.

Dukungan yang ditingkatkan untuk pola aksesibilitas UIAutomation

Dimulai dengan .NET Framework 4.7.1, pengembang alat teknologi aksesibilitas dapat memanfaatkan pola dan properti aksesibilitas API umum untuk beberapa kontrol WinForms. Peningkatan aksesibilitas ini meliputi:

Pengalaman peramban properti yang ditingkatkan

Dimulai dengan .NET Framework 4.7.1, Windows Forms mencakup:

  • Navigasi keyboard yang lebih baik melalui berbagai jendela pilihan drop-down.
  • Pengurangan penghentian tab yang tidak perlu.
  • Pelaporan jenis kontrol yang lebih baik.
  • Perilaku narator yang ditingkatkan.

Kontrol web ASP.NET

Dimulai dengan .NET Framework 4.7.1 dan Visual Studio 2017 versi 15.3, ASP.NET meningkatkan cara kerja kontrol web ASP.NET dengan teknologi aksesibilitas di Visual Studio. Perubahan tersebut antara lain sebagai berikut:

  • Perubahan untuk mengimplementasikan pola aksesibilitas UI yang tidak ada dalam kontrol, seperti dialog Tambahkan Bidang di wizard Tampilan Detail, atau dialog Konfigurasikan ListView pada wizard ListView.

  • Perubahan untuk meningkatkan tampilan dalam mode Kontras Tinggi, seperti Editor Bidang Data Pager.

  • Perubahan untuk meningkatkan pengalaman navigasi keyboard untuk kontrol, seperti dialog Bidang dalam wizard Edit Bidang Pager dari kontrol DataPager, dialog Konfigurasi ObjectContext, atau dialog Konfigurasi Pemilihan Data dari wizard Konfigurasi Sumber Data.

Alat .NET SDK

Alat Editor Konfigurasi (SvcConfigEditor.exe) dan Alat Penampil Jejak Layanan (SvcTraceViewer.exe) telah ditingkatkan dengan memperbaiki berbagai masalah aksesibilitas. Sebagian besar adalah masalah kecil, seperti nama yang tidak ditentukan atau pola automasi UI tertentu yang tidak diterapkan dengan benar. Meskipun banyak pengguna tidak akan menyadari nilai yang salah ini, pelanggan yang menggunakan teknologi bantu seperti pembaca layar akan mendapati alat SDK ini lebih mudah diakses.

Penyempurnaan ini mengubah beberapa perilaku sebelumnya, seperti urutan fokus keyboard.

Perancang Alur Kerja Windows Workflow Foundation (WF)

Perubahan aksesibilitas di Perancang Workflow mencakup hal berikut:

  • Urutan tab berubah dari kiri ke kanan dan atas ke bawah di beberapa kontrol:

  • Lebih banyak fungsi yang tersedia melalui keyboard:

    • Saat mengedit properti aktivitas, grup properti dapat diciutkan dengan keyboard saat pertama kali difokuskan.

    • Ikon peringatan dapat diakses dengan keyboard.

    • Tombol Properti Lainnya di jendela Properti dapat diakses dengan keyboard.

    • Pengguna keyboard dapat mengakses item header di panel Argumen dan Variabel pada Perancang Alur Kerja.

  • Visibilitas item yang disempurnakan dengan fokus, seperti saat:

    • Menambahkan baris ke kisi data yang digunakan oleh Perancang Alur Kerja dan perancang aktivitas.

    • Men-tab melalui bidang dalam aktivitas ReceiveReply dan SendReply.

    • Mengatur nilai default untuk variabel atau argumen

  • Pembaca layar sekarang dapat mengenali beberapa hal berikut dengan benar:

    • Titik henti yang diatur dalam perancang alur kerja.

    • Aktivitas FlowSwitch<T>, FlowDecision, dan CorrelationScope.

    • Konten aktivitas Receive.

    • Jenis Target untuk aktivitas InvokeMethod.

    • Kotak kombo Pengecualian dan bagian Terakhir di aktivitas TryCatch.

    • Kotak kombo Jenis Pesan, pemisah di jendela Tambahkan Inisialisasi Korelasi, jendela Definisi Konten, dan jendela Definisi CorrelatesOn dalam aktivitas perpesanan (Receive, Send, SendReply, dan ReceiveReply).

    • Transisi mesin status serta tujuan transisi.

    • Anotasi dan konektor pada aktivitas FlowDecision.

    • Menu konteks (klik kanan) untuk aktivitas.

    • Editor nilai properti, tombol Hapus Pencarian, tombol urutkan Berdasarkan Kategori dan Abjad, serta dialog Editor Ekspresi di kisi properti.

    • Persentase perbesar tampilan di Perancang Alur Kerja.

    • Pemisah dalam aktivitas Parallel dan Pick.

    • Aktivitas InvokeDelegate.

    • Jendela Pilih Jenis untuk aktivitas kamus (Microsoft.Activities.AddToDictionary<TKey,TValue>, Microsoft.Activities.RemoveFromDictionary<TKey,TValue>, dll.).

    • Jendela Telusuri dan Pilih Jenis .NET.

    • Breadcrumb di Perancang Alur kerja.

  • Pengguna yang memilih tema Kontras Tinggi akan melihat banyak peningkatan dalam visibilitas Perancang Alur Kerja dan kontrolnya, seperti rasio kontras yang lebih baik antara elemen dan kotak pilihan yang lebih mencolok yang digunakan untuk elemen fokus.

Lihat juga