Megosztás a következőn keresztül:


Az akadálymentesség újdonságai a .NET-keretrendszer

.NET-keretrendszer célja, hogy az alkalmazásokat akadálymentesebbé tegye a felhasználók számára. Az akadálymentességi funkciók lehetővé teszik, hogy az alkalmazások megfelelő élményt nyújtsanak a kisegítő technológiák felhasználói számára. A .NET-keretrendszer 4.7.1-es verziójától kezdve a .NET-keretrendszer számos akadálymentességi fejlesztést tartalmaz, amelyekkel a fejlesztők akadálymentes alkalmazásokat hozhatnak létre.

Akadálymentességi kapcsolók

Beállíthatja, hogy az alkalmazás akadálymentességi funkciókat válasszon, ha .NET-keretrendszer 4.7-es vagy korábbi verziót céloz meg, de a .NET-keretrendszer 4.7.1-es vagy újabb verzióján fut. Az alkalmazást úgy is konfigurálhatja, hogy régi funkciókat használjon (és ne használja ki az akadálymentességi funkciókat), ha a 4.7.1-.NET-keretrendszer vagy újabb verziót célozza meg. Minden .NET-keretrendszer kisegítő szolgáltatásokat tartalmazó verzió verzióspecifikus akadálymentességi kapcsolóval rendelkezik, amelyet az <AppContextSwitchOverrides> alkalmazás konfigurációs fájljának szakaszában <runtime> ad hozzá. A támogatott kapcsolók a következők:

Verzió Switch
.NET-keretrendszer 4.7.1 "Switch.UseLegacyAccessibilityFeatures"
.NET-keretrendszer 4.7.2 "Switch.UseLegacyAccessibilityFeatures.2"
.NET-keretrendszer 4.8 "Switch.UseLegacyAccessibilityFeatures.3"
2020. augusztus 11-KB4569746 kumulatív frissítés .NET-keretrendszer 4.8-hoz "Switch.UseLegacyAccessibilityFeatures.4"
.NET-keretrendszer 4.8.1 "Switch.UseLegacyAccessibilityFeatures.5"

Az akadálymentességi fejlesztések előnyeinek kihasználása

Az új akadálymentességi funkciók alapértelmezés szerint engedélyezve vannak a 4.7.1-.NET-keretrendszer vagy újabb verziójú alkalmazások esetében. Ezenkívül azok az alkalmazások, amelyek a .NET-keretrendszer egy korábbi verzióját használják, de .NET-keretrendszer 4.7.1-es vagy újabb verzión futnak, kikapcsolhatják az örökölt akadálymentességi viselkedést (és ezáltal kihasználhatják az akadálymentességi fejlesztések előnyeit), ha az alkalmazás konfigurációs fájljának szakaszában <runtime> lévő elemhez <AppContextSwitchOverrides> kapcsolókat adnak hozzá, és értéküket a következőre falseállítja. Az alábbi kódrészlet bemutatja, hogyan választhatja ki a .NET-keretrendszer 4.7.1-ben bevezetett akadálymentességi fejlesztéseket:

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

Ha úgy dönt, hogy egy későbbi .NET-keretrendszer verzióban engedélyezi az akadálymentességi funkciókat, a korábbi verziók funkcióit is explicit módon kell választania. Ha úgy szeretné konfigurálni az alkalmazást, hogy kihasználja a 4.7.1-es és a 4.7.2-es .NET-keretrendszer akadálymentességi fejlesztéseit, adja hozzá a következő <AppContextSwitchOverrides> elemet:

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

Ha úgy szeretné konfigurálni az alkalmazást, hogy kihasználja a .NET-keretrendszer 4.7.1-es, 4.7.2-es, 4.8-es és 2020. augusztusi kumulatív frissítés .NET-keretrendszer 4.8-ra vonatkozó akadálymentességi fejlesztéseit, adja hozzá a következő <AppContextSwitchOverrides> elemet:

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

Régi viselkedés visszaállítása

A .NET-keretrendszer 4.7.1-es verziójával kezdődően megcélzott alkalmazások letilthatják az akadálymentességi funkciókat az alkalmazás konfigurációs fájljának szakaszában található <runtime> elemhez <AppContextSwitchOverrides> kapcsolók hozzáadásával és értékük truebeállításával. Az alábbi konfiguráció például a .NET-keretrendszer 4.7.2-ben bevezetett akadálymentességi funkciókat tiltja le:

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

Az akadálymentesség újdonságai a .NET-keretrendszer 4.8.1-ben

.NET-keretrendszer 4.8.1 új kisegítő lehetőségeket tartalmaz a következő területeken:

Windows Forms

Hozzáadott és továbbfejlesztett UIA-reprezentációk

A 4.8.1-es .NET-keretrendszer előtt a Windows Forms nem támogatott számos UIA-mintát, amelyek támogatják az alkalmazásokkal való interakciót segítő technológiát. Ez a hiányosság azt okozhatja, hogy a Narrátor vagy más képernyőolvasók hiányos vagy helytelen információkat jelentenek. Ez olyan fontos funkciókat is érinthet, mint a kurzor áthelyezése a vezérlőelem szövegén TextBox . A .NET-keretrendszer 4.8.1-ben a közös vezérlőkhöz szükséges összes minta implementálva lett. Ez az új funkció a kisegítő technológia felhasználóinak sokkal gazdagabb alkalmazás-interakciós élményt nyújt.

  • Az UIA kibontási/összecsukási mintájának támogatása hozzáadva a DateTimePicker vezérlőhöz.
  • UIA-támogatás hozzáadva a MonthCalendar vezérlőhöz. Az olyan kisegítő technológiai eszközök, mint a Narrátor, navigálhatnak az egyes dátumok között a vezérlőben.
  • Az implementált szövegminta támogatja az összes szövegalapú vezérlőt, beleértve a TextBox, szerkesztési PropertyGrid vezérlőt ToolStripTextBoxDataGridViewTextBoxCellés DomainUpDown vezérlőket. MaskedTextBox
  • ToolTipMost a WCAG2.1 irányelveit követi, hogy a Windows 11-en állandó, elutasítható és rámutatható legyen. Az elemleírások viselkedésének módosítása olyan Windows 11-rendszerekre korlátozódik, amelyek .NET-keretrendszer 4.8.1-.NET-keretrendszer telepítve vannak, és csak azokra az alkalmazásokra vonatkoznak, amelyeknél az elemleíráshoz nem állítottak be időtúllépést. A továbbra is megmaradó elemleírások az Esc vagy a Ctrl billentyűvel, vagy egy másik elemleíráskészlettel rendelkező vezérlőelemre lépve elvethetők.

Különböző hibajavítások a meglévő akadálymentességi funkciókhoz

  • A Narrátor mostantól egy üres DataGridView vezérlőre összpontosíthat.
  • Elhárítottunk egy hibát, amely miatt a képernyőolvasók megszámolták a rejtett oszlopokat egy vezérlőelem oszlopszámának DataGridView bejelentésekor.
  • Elhárítottunk egy hibát, amely miatt a DataGridView rendszer figyelmen kívül hagyta az alapul szolgáló űrlapon Font beállított DataGridviewCellStyle betűtípus-beállításokat, és a tulajdonság eltért a beállítástólDefaultFont.
  • Frissítette a AccessibleNameDataGridView vezérlő belső görgetősávjainak tulajdonságát a "ScrollBar" szöveg eltávolításához.
  • Kijavítottuk egy cella színét DataGridViewLinkCell , amikor a cella ki van jelölve.
  • Kijavítottunk egy olyan hibát, amely olyan egyéni DataGridView vezérlőkkel kapcsolatos, amelyeknél nem volt vagy LocalizedControlType nem ControlType volt megadva az egyéni DataGridViewCell elemekhez.
  • Frissítettük a fényerőarányt 3,5:1 értékre azokhoz a vezérlőkhöz ToolStripButton , amelyek ToolStripRenderMode a következőre Systemvannak állítva: .
  • Továbbfejlesztett billentyűzetnavigáció olyan ToolStrip esetekben, amikor az elem típus ToolStripComboBox .
  • A kontrasztos módban frissítettük a ToolStripButton háttérszínt.
  • Győződjön meg arról, hogy van egy határoló téglalap, amely a kisegítő technológiának jelent a ToolStripSeparator.
  • Kijavítottunk egy hibát, amely miatt a képernyőolvasó JAWS összeomlott a PropertyGrid vezérlő olvasásakor.
  • Győződjön meg arról, hogy egy vezérlőelem UIA-hierarchiafája PropertyGrid frissül, ha egy összetett bejegyzést kibontanak Font . Azt is biztosította, hogy a fa megfelelően frissüljön, amikor a bejegyzés összecsukva van, és már nem látható.
  • PropertyGrid A kategóriák mostantól honosított vezérlőtípussal PropertyGrid categoryrendelkeznek.
  • Kijavítottunk egy hibátComboBox, amely miatt az alkalmazás összeomlott a Windows Kisegítő lehetőségek Elemzések alatt.
  • Frissítette a szegélyszínt, Button hogy az alapértelmezett színek kontrasztosabbak lesznek.
  • Engedélyezett kisegítő technológiai eszközök a ControlBox teljes MDI gyermekűrlap gombjainak eléréséhez.
  • A AccessibleName vezérlőelem tulajdonsága DomainUpDown egy üres sztring új alapértelmezett értékével rendelkezik. Az üres sztring arra ösztönzi a fejlesztőket, hogy az előző nem üres alapértelmezett érték helyett egy értelmes nevet hozzanak létre.
  • Frissítette a AccessibleName Nyomtatás gomb tulajdonságát a PrintPreviewDialog "Nyomtatás gombról" a "Nyomtatás" értékre, hogy elkerülje a redundanciát, amikor a képernyőolvasók bejelentik a vezérlőt és annak típusát.
  • Frissített UIA-listavezérlők az üres listaelem eltávolításához, ha egy PropertyGrid cellatípus ComboBox bezárult, és már nem látható.

Windows Presentation Foundation (WPF)

Akadálymentes elemleírás-kezelési fejlesztések

Ebben a kiadásban a WPF továbbfejlesztette a felhasználói élményt azáltal, hogy az aktuális ablakban lévő elemleírást könnyen el lehet utasítani az Esc billentyűvel, a Ctrl billentyűvel (önmagában) vagy a Ctrl+Shift+F10 kombinációval. Az Esc-kulcs hatóköre ebben a kiadásban csökkent, hogy csak az aktuális ablakra vonatkozzanak, amikor korábban az alkalmazás bármely nyitott elemleírására vonatkozott volna. Alapértelmezés szerint a WPF elemleírások a WCAG2.1 irányelveit követik, hogy állandók, elutasíthatók és rámutathatók legyenek.

Az akadálymentesség újdonságai a 2020. augusztus 11-i összegző frissítésben a .NET-keretrendszer 4.8-hoz

A 2020. augusztus 11-KB4569746 kumulatív frissítés a .NET-keretrendszer 4.8-hoz új kisegítő lehetőségeket tartalmaz a Windows Formsban:

  • A vezérlőelemek bejelentésével PropertyGrid és a kategória kibontott/összecsukott állapotával kapcsolatos problémák megoldása képernyőolvasók szerint.

  • Frissítések a vezérlő és belső elemei akadálymentes mintáitPropertyGrid.

  • Frissítések a vezérlő belső elemeinek akadálymentes nevétPropertyGrid, hogy a képernyőolvasók megfelelően jelezve legyenek.

  • A vezérlőelemek akadálymentességére vonatkozó téglalaptulajdonságokat PropertyGridView tartalmazó címek.

  • Lehetővé teszi a képernyőolvasók számára a kombinált listacellák kibontott/összecsukott állapotának helyes bejelentését DataGridView .

Az akadálymentesség újdonságai a .NET-keretrendszer 4.8-ban

.NET-keretrendszer 4.8 az alábbi területeken tartalmaz új kisegítő lehetőségeket:

Windows Forms

A .NET-keretrendszer 4.8-ban a Windows Forms számos gyakran használt vezérlőhöz hozzáadja a LiveRegions és az Értesítési események támogatását. Emellett támogatja az Eszközt Tippek amikor a felhasználó a billentyűzettel lép egy vezérlőre.

UIA LiveRegions-támogatás címkékben és statusStripsben

Az UIA LiveRegions lehetővé teszi, hogy az alkalmazásfejlesztők értesítést küldhessenek a képernyőolvasóknak egy szövegmódosításról egy olyan vezérlőben, amely a felhasználó munkahelyétől eltérő helyen található. Ez hasznos lehet például egy StatusStrip kapcsolati állapotot megjelenítő vezérlőelem esetében. Ha a kapcsolat megszakad, és az állapot megváltozik, előfordulhat, hogy a fejlesztő értesíteni szeretné a képernyőolvasót.

A .NET-keretrendszer 4.8-tól kezdve a Windows Forms az UIA LiveRegions-t implementálja mind a vezérlőkhöz, mind a LabelStatusStrip vezérlőkhöz. A következő kód például a LiveRegiont használja egy Label nevesített label1vezérlőelemben:

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

…
Label1.Text = "Ready!";

A Narrátor felolvassa a "Kész" szöveget, függetlenül attól, hogy a felhasználó hol használja az alkalmazást.

Élőrégióként is megvalósíthatja a következőket 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 értesítési események

A Windows 10 Fall Creators Update-ben bevezetett UIA-értesítési esemény lehetővé teszi az alkalmazás számára, hogy UIA-eseményt hozzon létre, ami azt eredményezi, hogy a Narrátor egyszerűen az eseményhez megadott szöveg alapján tesz bejelentést anélkül, hogy a felhasználói felületen megfelelő vezérlőre lenne szükség. Bizonyos esetekben ez egy egyszerű módszer az alkalmazás akadálymentességének drasztikus javítására. Az In is hasznos lehet, ha értesítést küld bizonyos folyamatok előrehaladásáról, amelyek hosszú ideig tarthatnak. További információ az UIA értesítési eseményeiről: Használhatja az asztali alkalmazás az új felhasználói felületi értesítési eseményt?.

Az alábbi példa az értesítési eseményt veti fel:

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

Eszköz Tippek billentyűzeten való hozzáférés

A .NET-keretrendszer 4.7.2-s és korábbi verzióit célzó alkalmazásokban a vezérlő elemleírása csak akkor aktiválható, ha egérmutatót helyez a vezérlőbe. A .NET-keretrendszer 4.8-tól kezdve a billentyűzetfelhasználók aktiválhatják a vezérlő elemleírását úgy, hogy a vezérlőt tabulátorbillentyűvel vagy nyílbillentyűkkel módosító billentyűkkel vagy anélkül összpontosítják. Ehhez a kisegítő lehetőséghez további AppContext-kapcsolóra van szükség:

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

Az alábbi ábrán az elemleírás látható, amikor a felhasználó kiválasztott egy gombot a billentyűzettel.

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

Windows Presentation Foundation (WPF)

A 4.8-.NET-keretrendszer kezdve a WPF számos akadálymentességi fejlesztést tartalmaz.

A képernyő narrátorai már nem jelentik be az összecsukott vagy rejtett láthatóságú elemeket

Az összecsukott vagy rejtett láthatóságú elemeket a képernyőolvasó már nem jelenti be. Azok a felhasználói felületek, amelyek olyan elemeket tartalmaznak, amelyek láthatóságával Visibility.Collapsed rendelkeznek, vagy Visibility.Hidden a képernyőolvasók félrevezethetik őket, ha a felhasználónak bejelentik őket. A 4.8-as .NET-keretrendszer kezdve a WPF már nem tartalmaz összecsukott vagy rejtett elemeket az UIAutomation fa Vezérlő nézetében, így a képernyőolvasók már nem tudják felolvasni ezeket az elemeket.

SelectionTextBrush tulajdonság nem Adorner-alapú szövegkijelöléshez

A .NET-keretrendszer 4.7.2-ben a WPF az Adorner-réteg használata nélkül is képes rajzolni TextBox és PasswordBox szövegeket kijelölni. Ebben a forgatókönyvben a kijelölt szöveg előtérszínét a következő diktálta SystemColors.HighlightTextBrush: .

.NET-keretrendszer 4.8 új tulajdonságot ad hozzá, amely lehetővé teszi a fejlesztők számára, SelectionTextBrushhogy a nem Adorner-alapú szöveg kijelölésekor a kijelölt szöveghez tartozó ecsetet válasszák ki. Ez a tulajdonság csak TextBoxBasea -származtatott vezérlőkön és a WPF-alkalmazások vezérlőelemein működik, amelyeken engedélyezve van a PasswordBox nem Adorner-alapú szövegkiválasztás. Nem működik a RichTextBox vezérlőn. Ha a nem Adorner-alapú szövegkijelölés nincs engedélyezve, a tulajdonság figyelmen kívül lesz hagyva.

A tulajdonság használatához egyszerűen adja hozzá az XAML-kódhoz, és használja a megfelelő kefét vagy kötést. Az eredményként kapott szövegkijelölés a következőképpen néz ki:

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

Kombinálhatja a tulajdonságok és SelectionTextBrush a SelectionBrush tulajdonságok használatát a megfelelőnek ítélt háttér- és előtérszín-kombinációk létrehozásához.

A UIAutomation ControllerFor tulajdonság támogatása

A UIAutomation tulajdonsága olyan automatizálási elemek tömbjét ControllerFor adja vissza, amelyeket a tulajdonságot támogató automatizálási elem módosít. Ezt a tulajdonságot gyakran használják az automatikus javaslat-akadálymentességhez. ControllerFor akkor használatos, ha egy automatizálási elem az alkalmazás felhasználói felületének vagy az asztalnak egy vagy több szegmensét érinti. Ellenkező esetben nehéz társítani a vezérlőművelet hatását a felhasználói felület elemeivel. Ez a funkció lehetővé teszi, hogy a vezérlők értéket adjanak a ControllerFor tulajdonságnak.

.NET-keretrendszer 4.8 új virtuális metódust ad hozzá. GetControlledPeersCore() A tulajdonság értékének megadásához egyszerűen írja felül ezt a ControllerFor metódust, és adjon vissza egy értéket List<AutomationPeer> az ezzel AutomationPeermanipulált vezérlők számára:

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

Elemleírások a billentyűzet-hozzáféréshez

A .NET-keretrendszer 4.7.2-s és korábbi verzióiban az elemleírások csak akkor jelennek meg, ha a felhasználó az egérmutatót egy vezérlő fölé viszi. A .NET-keretrendszer 4.8-ban az elemleírások a billentyűzetfókuszon és a billentyűparancsokon is megjelennek.

A funkció engedélyezéséhez az alkalmazásnak meg kell céloznia a 4.8-.NET-keretrendszer, vagy az AppContext kapcsolókkalSwitch.UseLegacyAccessibilityFeatures.3Switch.UseLegacyToolTipDisplaykell bejelentkeznie. Az alábbi mintaalkalmazás-konfigurációs fájl:

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

Ha engedélyezve van, az elemleírást tartalmazó vezérlők akkor jelennek meg, ha a vezérlő fókuszba kerül. Az elemleírás idővel vagy a billentyűzet fókuszának megváltozásakor is elvethető. A felhasználók manuálisan is elvethetik az elemleírást egy új billentyűparanccsal, a Ctrl+Shift+F10 billentyűkombinációval. Az elemleírás elvetése után ugyanazzal a billentyűparanccsal ismét megjeleníthető.

Feljegyzés

A vezérlők menüszalagjának Ribbon elemleírásai nem jelennek meg a billentyűzetfókuszban, csak a billentyűparancson keresztül jelennek meg.

A SizeOfSet és a PositionInSet UIAutomation tulajdonságok támogatása hozzáadva

A Windows 10 két új UIAutomation tulajdonságot vezetett be, SizeOfSet amelyeket PositionInSetaz alkalmazások a készlet elemeinek számának leírására használnak. A UIAutomation ügyfélalkalmazásai, például a képernyőolvasók lekérdezhetik az alkalmazásokat ezekről a tulajdonságokról, és bejelenthetik az alkalmazás felhasználói felületének pontos ábrázolását.

A 4.8-as .NET-keretrendszer kezdve a WPF ezt a két tulajdonságot teszi elérhetővé a WPF-alkalmazások UIAutomation szolgáltatásában. Ez kétféleképpen valósítható meg:

  • Függőségi tulajdonságok használatával.

    A WPF két új függőségi tulajdonságot AutomationProperties.SizeOfSet és AutomationProperties.PositionInSet. A fejlesztők az XAML használatával állíthatják be az értékeiket:

    <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>
    
  • Az AutomationPeer virtuális metódusok felülírásával.

    A GetSizeOfSetCore() rendszer hozzáadta a virtuális és GetPositionInSetCore() a virtuális metódusokat az AutomationPeer osztályhoz. A fejlesztők az alábbi példában látható módon adhatnak meg értékeket ezekhez SizeOfSetPositionInSet a módszerekhez és felül is bírálhatják őket:

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

Emellett a ItemsControl példányok elemei automatikusan, a fejlesztő további művelete nélkül is értéket adnak ezeknek a tulajdonságoknak. Ha egy ItemsControl csoport van csoportosítva, a csoportok gyűjteménye halmazként jelenik meg, és minden csoport külön halmazként van megadva, és a csoporton belüli minden elem megadja a csoporton belüli pozícióját, valamint a csoport méretét. Az automatikus értékeket a virtualizálás nem befolyásolja. Még ha egy elem nem is valósul meg, akkor is beleszámít a készlet teljes méretéhez, és befolyásolja a testvérelemek halmazának pozícióját.

Az automatikus értékek csak akkor lesznek megadva, ha az alkalmazás a 4.8-as .NET-keretrendszer célozza meg. A .NET-keretrendszer egy korábbi verzióját megcélzott alkalmazások esetében beállíthatja az Switch.UseLegacyAccessibilityFeatures.3AppContext kapcsolót az alábbi App.config fájlban látható módon:

<?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) munkafolyamat-tervező

A munkafolyamat-tervező a következő módosításokat tartalmazza a .NET-keretrendszer 4.8-ban:

  • A Narrátort használó felhasználók a FlowSwitch-esetfeliratok fejlesztéseit fogják látni.

  • A Narrátort használó felhasználók a gombleírások fejlesztéseit láthatják.

  • A kontrasztos témákat választó felhasználók a Munkafolyamat Tervező és vezérlőinek láthatósága terén javulnak, például jobb kontrasztarányok az elemek között, valamint a fókuszelemekhez használt észrevehetőbb kijelölési mezők.

Ha az alkalmazás .NET-keretrendszer 4.7.2-es vagy korábbi verziót céloz meg, az AppContext kapcsoló false beállításával Switch.UseLegacyAccessibilityFeatures.3engedélyezheti ezeket a módosításokat az alkalmazáskonfigurációs fájlban. További információkért lásd a jelen cikk akadálymentességi fejlesztéseinek előnyeit ismertető szakaszát.

Az akadálymentesség újdonságai a .NET-keretrendszer 4.7.2-ben

.NET-keretrendszer 4.7.2 új kisegítő lehetőségeket tartalmaz a következő területeken:

Windows Forms

Operációs rendszer által definiált színek a kontrasztos témákban

A .NET-keretrendszer 4.7.2-től kezdve a Windows Forms az operációs rendszer által definiált színeket használja a Kontrasztos témákban. Ez a következő vezérlőket érinti:

A Narrátor fejlesztései

A .NET-keretrendszer 4.7.2-től kezdve a Narrátor támogatása az alábbiak szerint bővül:

  • A függvény felolvassa a tulajdonság értékét, ToolStripMenuItem.ShortcutKeys amikor bejelenti ToolStripMenuItemegy .

  • Azt jelzi, hogy egy adott tulajdonsága mikor ToolStripMenuItem van Enabled beállítva false.

  • Visszajelzést ad egy jelölőnégyzet állapotáról, ha a ListView.CheckBoxes tulajdonság értéke true.

  • A Narrátor Vizsgálati mód fókuszrendje megegyezik a ClickOnce letöltési párbeszédpanel vezérlőinek vizuális sorrendjével.

A DataGridView fejlesztései

A .NET-keretrendszer 4.7.2-től kezdve a DataGridView vezérlő a következő akadálymentességi fejlesztéseket vezette be:

Továbbfejlesztett vizuális jelek

  • Az RadioButton üres Text tulajdonsággal rendelkező és CheckBox vezérlők fókuszjelzőt jelenítenek meg, amikor megkapják a fókuszt.

Továbbfejlesztett tulajdonságrács-támogatás

  • A PropertyGrid vezérlő gyermekelemeinek mostantól csak akkor ad vissza tulajdonságot true , IsReadOnlyProperty ha engedélyezve van egy PropertyGrid elem.

  • A PropertyGrid vezérlő gyermekelem csak akkor ad vissza tulajdonságot false , IsEnabledProperty ha a felhasználó módosíthat egy PropertyGrid elemet.

Továbbfejlesztett billentyűzet-navigáció

Windows Presentation Foundation (WPF)

A Jelölőnégyzet és a RadioButton vezérlő módosítása

A .NET-keretrendszer 4.7.1-s és korábbi verzióiban a WPF System.Windows.Controls.CheckBox és System.Windows.Controls.RadioButton a vezérlők inkonzisztensek, a klasszikus és a kontrasztos témákban pedig helytelen fókuszvizualizációk. Ezek a problémák olyan esetekben fordulnak elő, amikor a vezérlők nem rendelkeznek tartalomkészlettel. Ez megnehezítheti a témák és a fókuszvizualizáció közötti átmenetet.

A .NET-keretrendszer 4.7.2-ben ezek a vizualizációk egységesebbek a témák között, és könnyebben láthatók a klasszikus és a kontrasztos témákban.

WPF-alkalmazásban üzemeltetett WinForms-vezérlők

A 4.7.1-es és korábbi verziókban .NET-keretrendszer WPF-alkalmazásokban üzemeltetett WinForms-vezérlők esetében a felhasználók nem tudtak kifülelni a WinForms-rétegből, ha a réteg első vagy utolsó vezérlője a WPF-vezérlőElementHost. A .NET-keretrendszer 4.7.2-es verziójában a felhasználók mostantól a WinForms-rétegből is lefülelhetnek.

Előfordulhat azonban, hogy a WinForms-réteget soha nem megkerülő automatizált alkalmazások a várt módon működnek.

Az akadálymentesség újdonságai a .NET-keretrendszer 4.7.1-ben

.NET-keretrendszer 4.7.1 új kisegítő lehetőségeket tartalmaz a következő területeken:

Windows Presentation Foundation (WPF)

Képernyőolvasó fejlesztései

Ha engedélyezve vannak a kisegítő lehetőségek fejlesztései, a .NET-keretrendszer 4.7.1 a képernyőolvasókat érintő alábbi fejlesztéseket tartalmazza:

  • A .NET-keretrendszer 4.7-ben és a korábbi verziókban Expander a képernyőolvasók gombként jelentették be a vezérlőket. A .NET-keretrendszer 4.7.1-től kezdve a rendszer megfelelően kiterjeszthető/összecsukható csoportokként jelenti be őket.

  • A .NET-keretrendszer 4.7-ben és a korábbi verziókban a DataGridCell képernyőolvasók "egyéniként" jelentették be a vezérlőket. A .NET-keretrendszer 4.7.1-től kezdve a rendszer mostantól helyesen jelenti be őket adatrácscellaként (honosítva).

  • A .NET-keretrendszer 4.7.1-től kezdve a képernyőolvasók felolvassa a szerkeszthetők ComboBoxnevét.

  • A .NET-keretrendszer 4.7-ben és a korábbi verziókban a vezérlőket "nem nézetben lévő elemként" jelentették be, PasswordBox vagy egyéb módon helytelen viselkedést észleltek. Ez a probléma a 4.7.1-.NET-keretrendszer kezdődően ki lett javítva.

A UIAutomation LiveRegion támogatása

Az olyan képernyőolvasók, mint a Narrátor, segítenek az alkalmazások felhasználói felületi tartalmának olvasásában, általában a fókuszban lévő felhasználói felületi tartalom szövegfelolvasási kimenete alapján. Ha azonban egy felhasználói felületi elem megváltozik, és nincs fókuszban, előfordulhat, hogy a felhasználó nem kap értesítést, és kihagyhatja a fontos információkat. Az élő régiók célja a probléma megoldása. A fejlesztő felhasználhatja őket, hogy tájékoztassa a képernyőolvasót vagy bármely más UIAutomation-ügyfelet arról, hogy fontos módosítás történt egy felhasználói felületi elemen. A képernyőolvasó ezután eldöntheti, hogyan és mikor tájékoztatja a felhasználót erről a változásról.

Az élő régiók támogatásához a következő API-k lettek hozzáadva a WPF-hez:

LiveRegiont úgy hozhat létre, hogy az AutomationProperties.LiveSetting tulajdonságot a fontos elemre állítja, ahogyan az alábbi példában látható:

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

Amikor az élő régió adatai megváltoznak, és tájékoztatnia kell egy képernyőolvasót, explicit módon elő kell emelnie egy eseményt az alábbi mintában látható módon.

var peer = FrameworkElementAutomationPeer.FromElement(myTextBlock);

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

Kontrasztos megjelenítés

A .NET-keretrendszer 4.7.1-től kezdve a különböző WPF-vezérlők kontrasztos fejlesztései történtek. Ezek most már láthatók a HighContrast téma beállításakor. Ezek közé tartoznak:

  • Expander Ellenőrzés

    Ekkor megjelenik a Expander vezérlő fókuszvizualizációja. A billentyűzet vizualizációi ComboBoxListBoxRadioButton és a vezérlők is láthatók. Példa:

    Előtte:

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

    Utána:

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

  • CheckBox és RadioButton vezérlők

    A kontrasztos témákban kijelölt szöveg mostantól RadioButton könnyebben látható a vezérlőkben és a CheckBox vezérlőkben. Példa:

    Előtte:

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

    Utána:

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

  • ComboBox Ellenőrzés

    A .NET-keretrendszer 4.7.1-től kezdve a letiltott ComboBox vezérlőelem szegélye megegyezik a letiltott szöveg színével. Példa:

    Előtte:

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

    Utána:

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

    Emellett a letiltott és a szűrt gombok a megfelelő színt használják.

    Előtte:

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

    Utána:

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

    Végül a .NET-keretrendszer 4.7-es és korábbi verzióiban a ComboBox vezérlő stílusának Toolbar.ComboBoxStyleKey beállítása miatt a legördülő nyíl láthatatlanná vált. Ez a probléma a 4.7.1-.NET-keretrendszer kezdődően ki lett javítva. Példa:

    Előtte:

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

    Utána:

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

  • DataGrid Ellenőrzés

    A .NET-keretrendszer 4.7.1-től kezdődően a vezérlők DataGrid rendezési mutatója mostantól a megfelelő színösszeállítást használja. Példa:

    Előtte:

    Screenshot of sort indicator arrow before improvements.

    Utána:

    Screenshot of sort indicator arrow after improvements.

    Ezenkívül a .NET-keretrendszer 4.7-ben és a korábbi verziókban az alapértelmezett hivatkozásstílus helytelen színre változott az egéren a kontrasztos módban. Ez a probléma a 4.7.1-.NET-keretrendszer kezdődik. Hasonlóképpen, a DataGrid jelölőnégyzetoszlopok a várt színeket használják a billentyűzetfókusz visszajelzéséhez a .NET-keretrendszer 4.7.1-től kezdve.

    Előtte:

    Screenshot of a link saying Click Me! in red.

    Utána:

    Screenshot of a link saying Click Me! in yellow.

További információ a WPF akadálymentességi fejlesztéseiről a .NET-keretrendszer 4.7.1-ben: Akadálymentességi fejlesztések a WPF-ben.

A Windows Forms akadálymentességi fejlesztései

A .NET-keretrendszer 4.7.1-ben a Windows Forms (WinForms) az alábbi területeken tartalmazza a kisegítő lehetőségek változásait.

Továbbfejlesztett megjelenítés kontrasztos módban

A .NET-keretrendszer 4.7.1-től kezdve a különböző WinForms-vezérlők továbbfejlesztett renderelést kínálnak az operációs rendszerben elérhető HighContrast módokban. A Windows 10 módosította néhány kontrasztos rendszerszín értékeit, a Windows Forms pedig a Windows 10 Win32 keretrendszeren alapul. A legjobb élmény érdekében futtassa a Windows legújabb verzióját, és az alkalmazás.jegyzékfájl egy tesztalkalmazásban való hozzáadásával és a Windows 10 által támogatott operációsrendszer-sor kibontásával válassza ki a legújabb operációsrendszer-módosításokat, hogy az a következőképpen nézzen ki:

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

Néhány példa a kontrasztos megjelenítés változásaira:

  • Az elemek pipái MenuStrip könnyebben megtekinthetők.

  • Ha ki van jelölve, a letiltott MenuStrip elemek könnyebben megtekinthetők.

  • A kijelölt Button vezérlőelem szövege kontrasztos a kijelölés színével.

  • A letiltott szöveg könnyebben olvasható. Példa:

    Előtte:

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

    Utána:

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

  • Kontrasztos fejlesztések a Szálkivétel párbeszédpanelen.

Továbbfejlesztett Narrátor-támogatás

A Windows Forms a .NET-keretrendszer 4.7.1-ben az alábbi akadálymentességi fejlesztéseket tartalmazza a Narrátorhoz:

  • A MonthCalendar vezérlőt a Narrátor, valamint más felhasználói felületi automatizálási eszközök is elérhetik.

  • A CheckedListBox vezérlő értesíti a Narrátort, ha egy elem ellenőrzési állapota megváltozott, így a felhasználó értesítést kap arról, hogy módosította egy listaelem értékét.

  • A DataGridViewCell vezérlő a megfelelő írásvédett állapotot jelenti a Narrátornak.

  • A Narrátor mostantól képes olvasni a letiltott ToolStripMenuItem szöveget, míg korábban a letiltott menüelemeket kihagyta.

A UIAutomation akadálymentességi mintáinak továbbfejlesztett támogatása

A .NET-keretrendszer 4.7.1-es verziójától kezdve az akadálymentességi technológiai eszközök fejlesztői számos WinForms-vezérlőhöz használhatnak gyakori API-akadálymentességi mintákat és tulajdonságokat. Ezek az akadálymentességi fejlesztések a következők:

Továbbfejlesztett tulajdonságböngésző-felület

A .NET-keretrendszer 4.7.1-től kezdve a Windows Forms a következőket tartalmazza:

  • Jobb billentyűzet-navigáció a különböző legördülő menüablakokban.
  • A szükségtelen tabulátorok csökkentése.
  • Jobb jelentéskészítés a vezérlőtípusokról.
  • Továbbfejlesztett narrátori viselkedés.

ASP.NET webes vezérlők

A .NET-keretrendszer 4.7.1-es és a Visual Studio 2017 15.3-s verziójától kezdve ASP.NET ASP.NET webes vezérlők kisegítő lehetőségeket biztosító technológiával való működését javítja a Visual Studióban. A módosítások a következőket tartalmazzák:

  • A hiányzó felhasználói felületi akadálymentességi minták vezérlőkben való implementálásához szükséges módosítások, például a Mezők hozzáadása párbeszédpanel a Részletek nézet varázslóban vagy a ListView varázsló Listanézet konfigurálása párbeszédpanelje.

  • A kontrasztos megjelenítést javító módosítások, például az Adatlapozó mezők szerkesztője.

  • A vezérlők billentyűzet-navigációs funkcióinak javítása érdekében végzett módosítások, például a DataPager vezérlő Lapozómezők szerkesztése varázslóJának Mezők párbeszédpanelje, az ObjectContext konfigurálása párbeszédpanel vagy az Adatforrás konfigurálása varázsló Adatkijelölés konfigurálása párbeszédpanelje.

.NET SDK-eszközök

A konfigurációszerkesztő eszköz (SvcConfigEditor.exe) és a Service Trace Viewer eszköz (SvcTraceViewer.exe) a különböző akadálymentességi problémák megoldásával lett továbbfejlesztve. Ezek többsége kisebb problémák voltak, például egy név nem definiálva, vagy bizonyos felhasználói felületi automatizálási minták nem lettek megfelelően implementálva. Bár sok felhasználó nem fogja tudni ezeket a helytelen értékeket, az olyan kisegítő technológiákat használó ügyfelek, mint a képernyőolvasók, akadálymentesebbnek fogják találni ezeket az SDK-eszközöket.

Ezek a fejlesztések megváltoztatnak néhány korábbi viselkedést, például a billentyűzetfókusz sorrendjét.

Windows Workflow Foundation (WF) munkafolyamat Tervező

A munkafolyamat akadálymentességi Tervező a következők:

  • A tabulátorsorrend egyes vezérlőkben balról jobbra, felülről lefelé változik:

  • További függvények érhetők el a billentyűzeten:

    • Egy tevékenység tulajdonságainak szerkesztésekor a tulajdonságcsoportok összecsukhatók billentyűzettel, amikor először összpontosítanak.

    • A figyelmeztető ikonok billentyűzettel érhetők el.

    • A Tulajdonságok ablak További tulajdonságok gombja billentyűzettel érhető el.

    • A billentyűzetfelhasználók a Munkafolyamat Tervező Argumentumok és Változók paneljén érhetik el a fejlécelemeket.

  • A fókuszban lévő elemek jobb láthatósága, például amikor:

    • Sorok hozzáadása a munkafolyamat-Tervező és tevékenységtervezők által használt adatrácsokhoz.

    • A mezők és SendReply tevékenységek lapozásaReceiveReply.

    • Változók vagy argumentumok alapértelmezett értékeinek beállítása

  • A képernyőolvasók mostantól helyesen felismerhetik a következőt:

    • A munkafolyamat-tervezőben beállított töréspontok.

    • A FlowSwitch<T>, FlowDecisionés CorrelationScope tevékenységek.

    • A tevékenység tartalma Receive .

    • A tevékenység céltípusa InvokeMethod .

    • A Kivétel kombinált lista és a tevékenység Végül szakasza TryCatch .

    • Az Üzenettípus kombinált lista, a Korrelációs inicializálók hozzáadása ablakban lévő felosztó, a Tartalomdefiníció ablak és a KorreláteszOn definíció ablak az üzenetkezelési tevékenységekben (Receive, , SendSendReplyés ReceiveReply).

    • Állapotgép-áttűnések és áttűnések célhelyei.

    • Megjegyzések és összekötők a tevékenységekhez FlowDecision .

    • A környezet (jobb gombbal kattintva) menüi a tevékenységekhez.

    • A tulajdonságérték-szerkesztők, a Keresés törlése gomb, a Kategória és betűrend szerinti rendezés gomb, valamint a Tulajdonságrács Kifejezésszerkesztő párbeszédpanelje.

    • A munkafolyamat Tervező nagyítási aránya.

    • Az elválasztó a tevékenységekben és Pick a tevékenységekbenParallel.

    • A InvokeDelegate tevékenység.

    • A Szótártevékenységek (Microsoft.Activities.AddToDictionary<TKey,TValue>stb Microsoft.Activities.RemoveFromDictionary<TKey,TValue>.) Típusok kiválasztása ablaka.

    • A Tallózás és a .NET-típus kiválasztása ablak.

    • A munkafolyamat Tervező.

  • A kontrasztos témákat választó felhasználók számos fejlesztést láthatnak a Munkafolyamat Tervező és vezérlőinek láthatóságában, például az elemek közötti jobb kontrasztarányt és a fókuszelemekhez használt észrevehetőbb kijelölési mezőket.

Lásd még