Wat is er nieuw in toegankelijkheid in .NET Framework?

.NET Framework is bedoeld om toepassingen toegankelijker te maken voor uw gebruikers. Met toegankelijkheidsfuncties kan een toepassing een geschikte ervaring bieden voor gebruikers van ondersteunende technologie. Vanaf .NET Framework 4.7.1 bevat .NET Framework een groot aantal toegankelijkheidsverbeteringen waarmee ontwikkelaars toegankelijke toepassingen kunnen maken.

Toegankelijkheidsswitches

U kunt uw app zo configureren dat deze zich aanmeldt voor toegankelijkheidsfuncties als deze is gericht op .NET Framework 4.7 of een eerdere versie, maar wordt uitgevoerd op .NET Framework 4.7.1 of hoger. U kunt uw app ook configureren voor het gebruik van verouderde functies (en niet profiteren van toegankelijkheidsfuncties) als deze is gericht op .NET Framework 4.7.1 of hoger. Elke .NET Framework-versie met toegankelijkheidsfuncties heeft een versiespecifieke toegankelijkheidsswitch die u toevoegt aan het <AppContextSwitchOverrides> element in de <runtime> sectie van het configuratiebestand van de toepassing. Hier volgen de ondersteunde schakelopties:

Versie Switch
.NET Framework 4.7.1 "Switch.UseLegacyAccessibilityFeatures"
.NET Framework 4.7.2 "Switch.UseLegacyAccessibilityFeatures.2"
.NET Framework 4.8 "Switch.UseLegacyAccessibilityFeatures.3"
Cumulatieve update van 11 augustus 2020 KB4569746 voor .NET Framework 4.8 "Switch.UseLegacyAccessibilityFeatures.4"
.NET Framework 4.8.1 "Switch.UseLegacyAccessibilityFeatures.5"

Profiteren van toegankelijkheidsverbeteringen

De nieuwe toegankelijkheidsfuncties zijn standaard ingeschakeld voor toepassingen die zijn gericht op .NET Framework 4.7.1 of hoger. Bovendien kunnen toepassingen die gericht zijn op een eerdere versie van .NET Framework, maar worden uitgevoerd op .NET Framework 4.7.1 of hoger, zich afmelden voor verouderd toegankelijkheidsgedrag (en daarmee profiteren van toegankelijkheidsverbeteringen) door schakelopties toe te voegen aan het <AppContextSwitchOverrides> element in het gedeelte van het <runtime> configuratiebestand van de toepassing en hun waarde in te stellen op false. In het volgende fragment ziet u hoe u zich kunt aanmelden voor de toegankelijkheidsverbeteringen die zijn geïntroduceerd in .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>

Als u ervoor kiest om u aan te kiezen voor toegankelijkheidsfuncties in een latere versie van .NET Framework, moet u zich ook expliciet aanmelden voor de functies uit eerdere versies. Als u uw app wilt configureren om te profiteren van toegankelijkheidsverbeteringen in zowel .NET Framework 4.7.1 als 4.7.2, voegt u het volgende <AppContextSwitchOverrides> element toe:

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

Als u uw app wilt configureren om te profiteren van toegankelijkheidsverbeteringen in .NET Framework 4.7.1, 4.7.2, 4.8 en de cumulatieve update van augustus 2020 voor .NET Framework 4.8, voegt u het volgende <AppContextSwitchOverrides> element toe:

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

Verouderd gedrag herstellen

Toepassingen die gericht zijn op versies van .NET Framework die beginnen met 4.7.1, kunnen toegankelijkheidsfuncties uitschakelen door schakelopties toe te voegen aan het <AppContextSwitchOverrides> element in het <runtime> gedeelte van het configuratiebestand van de toepassing en hun waarde in te stellen op true. De volgende configuratie opteert bijvoorbeeld voor toegankelijkheidsfuncties die zijn geïntroduceerd in .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>

Wat is er nieuw in toegankelijkheid in .NET Framework 4.8.1

.NET Framework 4.8.1 bevat nieuwe toegankelijkheidsfuncties op de volgende gebieden:

Windows Forms

UIA-weergaven toegevoegd en verbeterd

Vóór .NET Framework 4.8.1 miste Windows Forms ondersteuning voor een reeks UIA-patronen ter ondersteuning van ondersteunende technologie voor interactie met toepassingen. Deze tekortkomingen kunnen ertoe leiden dat Verteller of andere schermlezers onvolledige of onjuiste informatie rapporteren. Het kan ook van invloed zijn op belangrijke functionaliteit, zoals het verplaatsen van een cursor door de tekst in een TextBox besturingselement. Met .NET Framework 4.8.1 zijn alle vereiste patronen voor de algemene besturingselementen geïmplementeerd. Deze nieuwe functionaliteit biedt gebruikers van ondersteunende technologie een veel rijkere ervaring met toepassingsinteractie.

  • Er is ondersteuning toegevoegd voor het UIA-patroon voor uitvouwen/samenvouwen aan het DateTimePicker besturingselement.
  • UIA-ondersteuning toegevoegd aan het MonthCalendar besturingselement. Hulpprogramma's voor ondersteunende technologie, zoals Verteller, kunnen nu door de afzonderlijke datums in het besturingselement navigeren.
  • Ondersteuning voor tekstpatronen geïmplementeerd voor alle besturingselementen op basis van tekst, waaronder het TextBox, besturingselement PropertyGridMaskedTextBoxbewerken, DataGridViewTextBoxCellen ToolStripTextBoxDomainUpDown besturingselementen.
  • ToolTip volgt nu de WCAG2.1-richtlijnen om permanent, sluitbaar en aanwijsbaar te zijn in Windows 11. Wijzigingen in het gedrag van knopinfo zijn beperkt tot Windows 11-systemen waarop .NET Framework 4.8.1 is geïnstalleerd en zijn alleen van toepassing op toepassingen waarvoor geen time-out is ingesteld voor de knopinfo. Knopinfo die behouden blijft, kan worden gesloten met de Esc-toets of de Ctrl-toets of door naar een besturingselement te navigeren met een andere knopinfoset.

Verschillende bugfixes voor bestaande toegankelijkheidsfuncties

  • Verteller kan zich nu richten op een leeg DataGridView besturingselement.
  • Er is een probleem opgelost waardoor schermlezers verborgen kolommen hebben geteld bij het aankondigen van het aantal kolommen in een DataGridView besturingselement.
  • Er is een probleem opgelost waardoor de DataGridView lettertype-instellingen die zijn ingesteld, worden genegeerd in het DataGridviewCellStyle geval dat het onderliggende formulier een Font eigenschap had die verschilt van DefaultFont.
  • De eigenschap van de AccessibleName interne schuifbalken van het DataGridView besturingselement bijgewerkt om de tekst 'Schuifbalk' te verwijderen.
  • De kleur van een DataGridViewLinkCell cel is opgelost wanneer de cel is geselecteerd.
  • Er is een probleem opgelost met aangepaste DataGridView besturingselementen waarbij er geen ControlType of LocalizedControlType opgegeven voor aangepaste DataGridViewCell elementen was.
  • De helderheidsverhouding is bijgewerkt naar 3,5:1 voor ToolStripButton besturingselementen die zijn ToolStripRenderMode ingesteld op System.
  • Verbeterde toetsenbordnavigatie in een ToolStrip wanneer het element een ToolStripComboBox type is.
  • De achtergrondkleur van de ToolStripButton modus hoog contrast bijgewerkt.
  • Zorg ervoor dat er een begrenzingsrechthoek is gerapporteerd aan ondersteunende technologie voor de ToolStripSeparator.
  • Er is een probleem opgelost waardoor de schermlezer JAWS vastliep bij het lezen van het PropertyGrid besturingselement.
  • Zorg ervoor dat de UIA-hiërarchiestructuur voor een PropertyGrid besturingselement wordt bijgewerkt wanneer een complexe vermelding zoals Font wordt uitgevouwen. Zorg er ook voor dat de structuur correct wordt bijgewerkt wanneer de vermelding vervolgens wordt samengevouwen en niet meer zichtbaar is.
  • PropertyGrid categorieën hebben nu een gelokaliseerd besturingselementtype PropertyGrid category.
  • Er is een probleem opgelost waarbij de ComboBox app kon vastlopen onder Toegankelijkheidsinzichten voor Windows.
  • De randkleur bijgewerkt zodat de Button standaardkleuren meer contrast hebben.
  • Ingeschakelde hulpmiddelen voor ondersteunende technologie voor toegang tot de ControlBox knoppen van een gemaximaliseerd MDI-onderliggend formulier.
  • De AccessibleName eigenschap van een DomainUpDown besturingselement heeft een nieuwe standaardwaarde van een lege tekenreeks. De lege tekenreeks moedigt ontwikkelaars aan om een betekenisvolle naam te maken in plaats van de vorige niet-lege standaardwaarde te accepteren.
  • AccessibleName De eigenschap van de knop Afdrukken in de PrintPreviewDialog knop Afdrukken bijgewerkt van 'Knop Afdrukken' naar 'Afdrukken' om redundantie te voorkomen wanneer schermlezers het besturingselement en het bijbehorende type aankondigen.
  • UIA-lijstbesturingselementen bijgewerkt om een leeg lijstelement te verwijderen wanneer een PropertyGrid cel van het type ComboBox wordt gesloten en niet meer zichtbaar is.

Windows Presentation Foundation (WPF)

Verbeteringen in de verwerking van toegankelijke knopinfo

In deze release heeft WPF de ervaring verbeterd door ervoor te zorgen dat knopinfo in het huidige venster eenvoudig kan worden gesloten met de Esc-toets, de Ctrl-toets (zelf) of door de combinatie Ctrl+Shift+F10. Het bereik van de Esc-toets is in deze release beperkt om alleen van toepassing te zijn op het huidige venster, toen deze eerder zou zijn toegepast op geopende knopinfo in de toepassing. WPF-knopinfo volgt standaard de WCAG2.1-richtlijnen om permanent, sluitbaar en aanwijsbaar te zijn.

Wat is er nieuw in toegankelijkheid in de cumulatieve update van augustus 2020 voor .NET Framework 4.8

De cumulatieve update van 11 augustus 2020 KB4569746 voor .NET Framework 4.8 bevat nieuwe toegankelijkheidsfuncties in Windows Forms:

  • Hiermee wordt een probleem opgelost met het aankondigen van PropertyGrid besturingsitems en de uitgevouwen/samengevouwen status van een categorie door schermlezers.

  • Hiermee worden de toegankelijke patronen van het PropertyGrid besturingselement en de binnenste elementen bijgewerkt.

  • Hiermee worden de toegankelijke namen van de binnenste elementen van het PropertyGrid besturingselement bijgewerkt, zodat ze correct worden aangekondigd door schermlezers.

  • Toegankelijke eigenschappen van de begrenzingsrechthoek voor de PropertyGridView besturingselementen.

  • Hiermee kunnen schermlezers de uitgevouwen/samengevouwen status van cellen met DataGridView invoervak correct aankondigen.

Wat is er nieuw in toegankelijkheid in .NET Framework 4.8

.NET Framework 4.8 bevat nieuwe toegankelijkheidsfuncties op de volgende gebieden:

Windows Forms

In .NET Framework 4.8 voegt Windows Forms ondersteuning toe voor LiveRegions en Meldingsgebeurtenissen aan veel veelgebruikte besturingselementen. Er wordt ook ondersteuning toegevoegd voor Knopinfo wanneer een gebruiker naar een besturingselement navigeert met behulp van het toetsenbord.

UIA LiveRegions-ondersteuning in labels en statussentrips

Met UIA LiveRegions kunnen ontwikkelaars van toepassingen schermlezers op de hoogte stellen van een tekstwijziging in een besturingselement dat zich bevindt, afgezien van de locatie waar de gebruiker werkt. Dit is bijvoorbeeld handig voor een StatusStrip besturingselement waarin de verbindingsstatus wordt weergegeven. Als de verbinding is verbroken en de status wordt gewijzigd, kan de ontwikkelaar de schermlezer op de hoogte stellen.

Vanaf .NET Framework 4.8 implementeert Windows Forms UIA LiveRegions voor zowel de als StatusStrip de Label besturingselementen. De volgende code gebruikt bijvoorbeeld de LiveRegion in een Label besturingselement met de naam label1:

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

…
Label1.Text = "Ready!";

Verteller kondigt 'Gereed' aan, ongeacht waar de gebruiker interactie heeft met de toepassing.

U kunt uw UserControl als liveregio ook implementeren:

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

Met de UIA-meldingsevenement, geïntroduceerd in Windows 10 Fall Creators Update, kan uw app een UIA-gebeurtenis genereren, wat ertoe leidt dat Verteller gewoon een aankondiging doet op basis van tekst die u bij de gebeurtenis opgeeft, zonder dat u een bijbehorend besturingselement in de gebruikersinterface hoeft te hebben. In sommige scenario's is dit een eenvoudige manier om de toegankelijkheid van uw app aanzienlijk te verbeteren. Het kan ook handig zijn om de voortgang van een bepaald proces op de hoogte te stellen dat lang kan duren. Zie Kan uw bureaublad-app gebruikmaken van de nieuwe gebeurtenis UI Notification?voor meer informatie over UIA Notification Events.

In het volgende voorbeeld wordt de meldings gebeurtenis gegenereerd:

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

Knopinfo voor toetsenbordtoegang

In toepassingen die zich richten op .NET Framework 4.7.2 en eerdere versies, kan knopinfo voor besturingselementen alleen worden geactiveerd om te worden weergegeven door een muis aanwijzer naar het besturingselement te verplaatsen. Vanaf .NET Framework 4.8 kan een toetsenbordgebruiker de knopinfo van een besturingselement activeren door het besturingselement te richten met behulp van een Tab-toets of pijltoetsen met of zonder wijzigingstoetsen. Voor deze specifieke toegankelijkheidsverbetering is een extra AppContext-switch vereist:

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

In de volgende afbeelding ziet u de knopinfo wanneer de gebruiker een knop met het toetsenbord heeft geselecteerd.

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

Windows Presentation Foundation (WPF)

Vanaf .NET Framework 4.8 bevat WPF een aantal toegankelijkheidsverbeteringen.

Schermlezers kondigen geen elementen meer aan met samengevouwen of verborgen zichtbaarheid

Elementen met samengevouwen of verborgen zichtbaarheid worden niet meer aangekondigd door schermlezer. Gebruikersinterfaces met elementen met een zichtbaarheid van Visibility.Collapsed of Visibility.Hidden kunnen verkeerd worden voorgesteld door schermlezers als ze aan de gebruiker worden aangekondigd. Vanaf .NET Framework 4.8 bevat WPF geen samengevouwen of verborgen elementen meer in de besturingsweergave van de UIAutomation-structuur, zodat de schermlezers deze elementen niet meer kunnen aankondigen.

SelectionTextBrush-eigenschap voor gebruik met tekstselectie op basis van niet-Versier

In .NET Framework 4.7.2 heeft WPF de mogelijkheid toegevoegd om te tekenen en PasswordBox tekst te selecteren TextBox zonder de layer Adorner te gebruiken. De voorgrondkleur van de geselecteerde tekst in dit scenario is bepaald door SystemColors.HighlightTextBrush.

.NET Framework 4.8 voegt een nieuwe eigenschap toe, SelectionTextBrushwaarmee ontwikkelaars de specifieke kwast voor de geselecteerde tekst kunnen selecteren wanneer ze tekstselectie op basis van niet-Versier gebruiken. Deze eigenschap werkt alleen op TextBoxBase-afgeleide besturingselementen en het PasswordBox besturingselement in WPF-toepassingen waarvoor tekstselectie is ingeschakeld op basis van niet-Adorner. Het werkt niet aan het RichTextBox besturingselement. Als tekstselectie op basis van niet-Adorner niet is ingeschakeld, wordt deze eigenschap genegeerd.

Als u deze eigenschap wilt gebruiken, voegt u deze toe aan uw XAML-code en gebruikt u de juiste kwast of binding. De resulterende tekstselectie ziet er als volgt uit:

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

U kunt het gebruik van de SelectionBrush en SelectionTextBrush eigenschappen combineren om elke gewenste combinatie van achtergrond- en voorgrondkleur te genereren.

Ondersteuning voor de eigenschap UIAutomation ControllerFor

De eigenschap UIAutomation ControllerFor retourneert een matrix met automatiseringselementen die worden bewerkt door het automatiseringselement dat deze eigenschap ondersteunt. Deze eigenschap wordt vaak gebruikt voor automatisch voorstellen voor toegankelijkheid. ControllerFor wordt gebruikt wanneer een automatiseringselement van invloed is op een of meer segmenten van de gebruikersinterface van de toepassing of het bureaublad. Anders is het moeilijk om de impact van de besturingsbewerking te koppelen aan UI-elementen. Met deze functie wordt de mogelijkheid voor besturingselementen toegevoegd om een waarde voor de ControllerFor eigenschap op te geven.

.NET Framework 4.8 voegt een nieuwe virtuele methode toe, GetControlledPeersCore(). Als u een waarde voor de ControllerFor eigenschap wilt opgeven, overschrijft u deze methode en retourneert u een List<AutomationPeer> voor de besturingselementen die door deze AutomationPeerbewerking worden bewerkt:

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

Knopinfo voor toetsenbordtoegang

In .NET Framework 4.7.2 en eerdere versies worden knopinfo alleen weergegeven wanneer de gebruiker de muisaanwijzer boven een besturingselement beweegt. In .NET Framework 4.8 worden knopinfo ook weergegeven op toetsenbordfocus en via een sneltoets.

Als u deze functie wilt inschakelen, moet een toepassing zich richten op .NET Framework 4.8 of opt-in met behulp van de Switch.UseLegacyAccessibilityFeatures.3 schakelopties en Switch.UseLegacyToolTipDisplayAppContext . Hier volgt een voorbeeld van een toepassingsconfiguratiebestand:

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

Zodra deze optie is ingeschakeld, worden alle besturingselementen met knopinfo weergegeven zodra het besturingselement de focus op het toetsenbord krijgt. De knopinfo kan na verloop van tijd worden gesloten of wanneer de focus op het toetsenbord wordt gewijzigd. Gebruikers kunnen de knopinfo ook handmatig sluiten met een nieuwe sneltoets Ctrl+Shift+F10. Zodra de knopinfo is gesloten, kan deze opnieuw worden weergegeven met dezelfde sneltoets.

Notitie

Knopinfo op het lint op Ribbon besturingselementen wordt niet weergegeven op de toetsenbordfocus. Ze worden alleen weergegeven via de sneltoets.

Ondersteuning toegevoegd voor de eigenschappen SizeOfSet en PositionInSet UIAutomation

In Windows 10 zijn twee nieuwe UIAutomation-eigenschappen geïntroduceerd. SizeOfSetPositionInSetDeze eigenschappen worden door toepassingen gebruikt om het aantal items in een set te beschrijven. UIAutomation-clienttoepassingen zoals schermlezers kunnen vervolgens een query uitvoeren op een toepassing voor deze eigenschappen en een nauwkeurige weergave van de gebruikersinterface van de toepassing aankondigen.

Vanaf .NET Framework 4.8 maakt WPF deze twee eigenschappen beschikbaar voor UIAutomation in WPF-toepassingen. Dit kan op twee manieren worden bereikt:

  • Door afhankelijkheidseigenschappen te gebruiken.

    WPF voegt twee nieuwe afhankelijkheidseigenschappen toe en AutomationProperties.SizeOfSetAutomationProperties.PositionInSet. Een ontwikkelaar kan XAML gebruiken om hun waarden in te stellen:

    <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>
    
  • Door virtuele methoden van AutomationPeer te overschrijven.

    De GetSizeOfSetCore() en GetPositionInSetCore() virtuele methoden zijn toegevoegd aan de AutomationPeer klasse. Een ontwikkelaar kan waarden opgeven voor SizeOfSet en PositionInSet door deze methoden te overschrijven, zoals wordt weergegeven in het volgende voorbeeld:

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

Bovendien bieden items in ItemsControl exemplaren automatisch een waarde voor deze eigenschappen zonder extra actie van de ontwikkelaar. Als een ItemsControl groep is gegroepeerd, wordt de verzameling groepen weergegeven als een set en wordt elke groep geteld als een afzonderlijke set, waarbij elk item in die groep de positie in die groep biedt, evenals de grootte van de groep. Automatische waarden worden niet beïnvloed door virtualisatie. Zelfs als een item niet wordt gerealiseerd, wordt het nog steeds meegeteld bij de totale grootte van de set en is dit van invloed op de positie in de set van de items op hetzelfde niveau.

Automatische waarden worden alleen opgegeven als de toepassing is gericht op .NET Framework 4.8. Voor toepassingen die zijn gericht op een eerdere versie van .NET Framework, kunt u de Switch.UseLegacyAccessibilityFeatures.3Switch AppContext instellen, zoals wordt weergegeven in het volgende App.config-bestand:

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

Werkstroomontwerper voor Windows Workflow Foundation (WF)

De werkstroomontwerper bevat de volgende wijzigingen in .NET Framework 4.8:

  • Gebruikers die Verteller gebruiken, zien verbeteringen in FlowSwitch-caselabels.

  • Gebruikers die Verteller gebruiken, zien verbeteringen in knopbeschrijvingen.

  • Gebruikers die thema's met hoog contrast kiezen, zien verbeteringen in de zichtbaarheid van de workflowontwerper en de besturingselementen, zoals betere contrastverhoudingen tussen elementen en duidelijkere selectievakken die worden gebruikt voor focuselementen.

Als uw toepassing is gericht op .NET Framework 4.7.2 of een eerdere versie, kunt u zich voor deze wijzigingen aanmelden door de Switch.UseLegacyAccessibilityFeatures.3AppContext-switchfalse in te stellen in uw toepassingsconfiguratiebestand. Zie de sectie Toegankelijkheidsverbeteringen gebruiken in dit artikel voor meer informatie.

Wat is er nieuw in toegankelijkheid in .NET Framework 4.7.2

.NET Framework 4.7.2 bevat nieuwe toegankelijkheidsfuncties op de volgende gebieden:

Windows Forms

Door het besturingssysteem gedefinieerde kleuren in thema's met hoog contrast

Vanaf .NET Framework 4.7.2 gebruikt Windows Forms kleuren die zijn gedefinieerd door het besturingssysteem in thema's met hoog contrast. Dit is van invloed op de volgende besturingselementen:

Verteller-verbeteringen

Vanaf .NET Framework 4.7.2 wordt de ondersteuning van Verteller als volgt uitgebreid:

  • De waarde van de ToolStripMenuItem.ShortcutKeys eigenschap wordt aangekondigd bij het aankondigen van de tekst van een ToolStripMenuItem.

  • Het geeft aan wanneer een ToolStripMenuItem eigenschap is Enabled ingesteld op false.

  • Het geeft feedback over de status van een selectievakje wanneer de ListView.CheckBoxes eigenschap is ingesteld op true.

  • De focusvolgorde scanmodus van Verteller is consistent met de visuele volgorde van de besturingselementen in het dialoogvenster ClickOnce-download.

Verbeteringen in DataGridView

Vanaf .NET Framework 4.7.2 heeft het DataGridView besturingselement de volgende toegankelijkheidsverbeteringen geïntroduceerd:

Verbeterde visuele aanwijzingen

  • De RadioButton besturingselementen CheckBox met een lege Text eigenschap geven een focusindicator weer wanneer ze de focus krijgen.

Verbeterde ondersteuning voor Property Grid

  • De PropertyGrid onderliggende elementen van het IsReadOnlyProperty besturingselement retourneren nu alleen een true eigenschap wanneer een PropertyGrid-element is ingeschakeld.

  • De PropertyGrid onderliggende elementen van het besturingselement retourneren een false voor de IsEnabledProperty eigenschap alleen wanneer een PropertyGrid-element door de gebruiker kan worden gewijzigd.

Verbeterde toetsenbordnavigatie

Windows Presentation Foundation (WPF)

Wijzigingen in de besturingselementen Selectievakje en Keuzerondje

In .NET Framework 4.7.1 en eerdere versies hebben de WPF System.Windows.Controls.CheckBox en System.Windows.Controls.RadioButton besturingselementen inconsistent en, in klassieke en hoog contrastthema's, onjuiste focusvisuals. Deze problemen treden op in gevallen waarin de besturingselementen geen inhoudsset hebben. Hierdoor kan de overgang tussen thema's verwarrend zijn en de focusvisual moeilijk te zien is.

In .NET Framework 4.7.2 zijn deze visuals nu consistenter over thema's en zijn ze gemakkelijker zichtbaar in klassieke en hoog contrastthema's.

WinForms-besturingselementen die worden gehost in een WPF-toepassing

Voor WinForms-besturingselement dat wordt gehost in een WPF-toepassing in .NET Framework 4.7.1 en eerdere versies, konden gebruikers geen tabs uitvoeren op de WinForms-laag als het eerste of laatste besturingselement in die laag het WPF-besturingselement ElementHost is. In .NET Framework 4.7.2 kunnen gebruikers nu uit de WinForms-laag gaan.

Geautomatiseerde toepassingen die afhankelijk zijn van focus, werken echter mogelijk niet meer zoals verwacht in de WinForms-laag.

Wat is er nieuw in toegankelijkheid in .NET Framework 4.7.1

.NET Framework 4.7.1 bevat nieuwe toegankelijkheidsfuncties op de volgende gebieden:

Windows Presentation Foundation (WPF)

Verbeteringen in schermlezer

Als toegankelijkheidsverbeteringen zijn ingeschakeld, bevat .NET Framework 4.7.1 de volgende verbeteringen die van invloed zijn op schermlezers:

  • In .NET Framework 4.7 en eerdere versies Expander werden besturingselementen aangekondigd door schermlezers als knoppen. Vanaf .NET Framework 4.7.1 worden ze correct aangekondigd als uitbreidbare/samenvouwbare groepen.

  • In .NET Framework 4.7 en eerdere versies DataGridCell werden besturingselementen aangekondigd door schermlezers als 'aangepast'. Vanaf .NET Framework 4.7.1 worden ze nu correct aangekondigd als gegevensrastercel (gelokaliseerd).

  • Vanaf .NET Framework 4.7.1 kondigen schermlezers de naam van een bewerkbaar aan ComboBox.

  • In .NET Framework 4.7 en eerdere versies PasswordBox werden besturingselementen aangekondigd als 'geen item in weergave' of hadden anderszins onjuist gedrag. Dit probleem is opgelost vanaf .NET Framework 4.7.1.

Ondersteuning voor UIAutomation LiveRegion

Schermlezers zoals Verteller helpen mensen de inhoud van de gebruikersinterface van een toepassing te lezen, meestal door tekst-naar-spraak-uitvoer van de inhoud van de gebruikersinterface die de focus heeft. Als een UI-element echter wordt gewijzigd en de focus niet heeft, wordt de gebruiker mogelijk niet op de hoogte gesteld en mist deze mogelijk belangrijke informatie. Liveregio's zijn gericht op het oplossen van dit probleem. Een ontwikkelaar kan deze gebruiken om de schermlezer of een andere UIAutomation-client te informeren dat er een belangrijke wijziging is aangebracht in een UI-element. De schermlezer kan vervolgens bepalen hoe en wanneer de gebruiker deze wijziging moet informeren.

Ter ondersteuning van liveregio's zijn de volgende API's toegevoegd aan WPF:

U kunt een LiveRegion maken door de eigenschap AutomationProperties.LiveSetting in te stellen op het interesse-element, zoals wordt weergegeven in het volgende voorbeeld:

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

Wanneer de gegevens in de liveregio veranderen en u een schermlezer moet informeren, brengt u expliciet een gebeurtenis op, zoals wordt weergegeven in het volgende voorbeeld.

var peer = FrameworkElementAutomationPeer.FromElement(myTextBlock);

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

Hoog contrast

Vanaf .NET Framework 4.7.1 zijn verbeteringen in hoog contrast aangebracht in verschillende WPF-besturingselementen. Ze zijn nu zichtbaar wanneer het HighContrast thema is ingesteld. Deze omvatten:

  • Expander-besturingselement

    De focusvisual voor het Expander besturingselement is nu zichtbaar. De toetsenbordvisuals voor ComboBoxenListBoxRadioButton besturingselementen zijn ook zichtbaar. Voorbeeld:

    Voor:

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

    Na:

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

  • CheckBox en RadioButton besturingselementen

    De tekst in de CheckBox en RadioButton besturingselementen is nu gemakkelijker te zien wanneer deze is geselecteerd in thema's met hoog contrast. Voorbeeld:

    Voor:

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

    Na:

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

  • ComboBox-besturingselement

    Vanaf .NET Framework 4.7.1 is de rand van een uitgeschakeld besturingselement ComboBox dezelfde kleur als uitgeschakelde tekst. Voorbeeld:

    Voor:

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

    Na:

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

    Bovendien gebruiken uitgeschakelde en gerichte knoppen de juiste themakleur.

    Voor:

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

    Na:

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

    Ten slotte is in .NET Framework 4.7 en eerdere versies het instellen van de stijl van een ComboBox besturingselement waardoor Toolbar.ComboBoxStyleKey de vervolgkeuzepijl onzichtbaar is. Dit probleem is opgelost vanaf .NET Framework 4.7.1. Voorbeeld:

    Voor:

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

    Na:

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

  • DataGrid-besturingselement

    Vanaf .NET Framework 4.7.1 gebruikt de sorteerindicatorpijl in DataGrid besturingselementen nu de juiste themakleuren. Voorbeeld:

    Voor:

    Screenshot of sort indicator arrow before improvements.

    Na:

    Screenshot of sort indicator arrow after improvements.

    Bovendien is in .NET Framework 4.7 en eerdere versies de standaardkoppelingsstijl gewijzigd in een onjuiste kleur voor de muisaanwijzer in modi met hoog contrast. Dit is opgelost vanaf .NET Framework 4.7.1. Op dezelfde manier DataGrid gebruiken selectievakjekolommen de verwachte kleuren voor feedback over toetsenbordfocus, te beginnen met .NET Framework 4.7.1.

    Voor:

    Screenshot of a link saying Click Me! in red.

    Na:

    Screenshot of a link saying Click Me! in yellow.

Zie Toegankelijkheidsverbeteringen in WPF voor meer informatie over verbeteringen in WPF-toegankelijkheid in .NET Framework 4.7.1.

Toegankelijkheidsverbeteringen in Windows Forms

In .NET Framework 4.7.1 bevat Windows Forms (WinForms) toegankelijkheidswijzigingen in de volgende gebieden.

Verbeterde weergave in de modus Hoog contrast

Vanaf .NET Framework 4.7.1 bieden verschillende WinForms-besturingselementen verbeterde rendering in de HighContrast-modi die beschikbaar zijn in het besturingssysteem. Windows 10 heeft de waarden voor sommige systeemkleuren met hoog contrast gewijzigd en Windows Forms is gebaseerd op het Windows 10 Win32-framework. Voer voor de beste ervaring uit op de nieuwste versie van Windows en meld u aan bij de meest recente wijzigingen in het besturingssysteem door een app.manifestbestand toe te voegen in een testtoepassing en commentaar te verwijderen van de door Windows 10 ondersteunde besturingssysteemregel, zodat deze er als volgt uitziet:

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

Enkele voorbeelden van wijzigingen in hoog contrast zijn:

  • Vinkjes in MenuStrip items zijn gemakkelijker te bekijken.

  • Wanneer deze optie is geselecteerd, zijn uitgeschakelde MenuStrip items gemakkelijker te bekijken.

  • Tekst in een geselecteerd besturingselement Button contrasteert met de selectiekleur.

  • Uitgeschakelde tekst is gemakkelijker te lezen. Voorbeeld:

    Voor:

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

    Na:

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

  • Verbeteringen met hoog contrast in het dialoogvenster Thread-uitzondering.

Verbeterde ondersteuning voor Verteller

Windows Forms in .NET Framework 4.7.1 bevat de volgende toegankelijkheidsverbeteringen voor Verteller:

  • Het MonthCalendar besturingselement kan worden geopend door verteller, evenals door andere automatiseringsprogramma's voor gebruikersinterfaces.

  • Het CheckedListBox besturingselement meldt Verteller wanneer de controlestatus van een item is gewijzigd, zodat de gebruiker wordt gewaarschuwd dat de waarde van een lijstitem is gewijzigd.

  • Het DataGridViewCell besturingselement rapporteert de juiste alleen-lezenstatus aan Verteller.

  • Verteller kan nu uitgeschakelde ToolStripMenuItem tekst lezen, terwijl eerder uitgeschakelde menu-items werden overgeslagen.

Verbeterde ondersteuning voor UIAutomation-toegankelijkheidspatronen

Vanaf .NET Framework 4.7.1 kunnen ontwikkelaars van hulpprogramma's voor toegankelijkheidstechnologie gebruikmaken van algemene API-toegankelijkheidspatronen en -eigenschappen voor verschillende WinForms-besturingselementen. Deze toegankelijkheidsverbeteringen zijn onder andere:

Verbeterde browserervaring voor eigenschappen

Vanaf .NET Framework 4.7.1 bevat Windows Forms:

  • Betere toetsenbordnavigatie via de verschillende vervolgkeuzelijsten selectievensters.
  • Een vermindering van onnodige tabstops.
  • Betere rapportage van controletypen.
  • Verbeterd vertellergedrag.

webbesturingselementen ASP.NET

Vanaf .NET Framework 4.7.1 en Visual Studio 2017 versie 15.3 verbetert ASP.NET hoe ASP.NET webbesturingselementen werken met toegankelijkheidstechnologie in Visual Studio. Wijzigingen zijn onder andere:

  • Wijzigingen in het implementeren van ontbrekende ui-toegankelijkheidspatronen in besturingselementen, zoals het dialoogvenster Veld toevoegen in de wizard Detailsweergave of het dialoogvenster ListView configureren van de wizard ListView .

  • Wijzigingen in het verbeteren van de weergave in de modus Hoog contrast, zoals de editor gegevenspaginavelden.

  • Wijzigingen om de toetsenbordnavigatie-ervaringen voor besturingselementen te verbeteren, zoals het dialoogvenster Velden bewerken in de wizard Pager-velden bewerken van het besturingselement DataPager, het dialoogvenster ObjectContext configureren of het dialoogvenster Gegevensselectie configureren van de wizard Gegevensbron configureren.

.NET SDK-hulpprogramma's

Het hulpprogramma configuratie-editor (SvcConfigEditor.exe) en het hulpprogramma servicetraceringsviewer (SvcTraceViewer.exe) zijn verbeterd door verschillende toegankelijkheidsproblemen op te lossen. De meeste van deze problemen waren kleine problemen, zoals een naam die niet wordt gedefinieerd of bepaalde UI-automatiseringspatronen niet correct worden geïmplementeerd. Hoewel veel gebruikers zich niet bewust zijn van deze onjuiste waarden, vinden klanten die ondersteunende technologieën zoals schermlezers gebruiken deze SDK-hulpprogramma's toegankelijker.

Deze verbeteringen wijzigen enkele eerdere gedragingen, zoals de focusvolgorde van het toetsenbord.

Windows Workflow Foundation (WF) Workflow Designer

Toegankelijkheidswijzigingen in workflowontwerper zijn onder andere:

  • In sommige besturingselementen verandert de tabvolgorde van links naar rechts en van boven naar beneden:

  • Er zijn meer functies beschikbaar via het toetsenbord:

    • Wanneer u de eigenschappen van een activiteit bewerkt, kunnen eigenschapsgroepen worden samengevouwen door het toetsenbord wanneer ze de eerste keer zijn gericht.

    • Waarschuwingspictogrammen zijn toegankelijk via het toetsenbord.

    • De knop Meer eigenschappen in het venster Eigenschappen is toegankelijk via het toetsenbord.

    • Toetsenbordgebruikers hebben toegang tot de koptekstitems in de deelvensters Argumenten en Variabelen van de werkstroomontwerper.

  • Verbeterde zichtbaarheid van items met focus, zoals wanneer:

    • Rijen toevoegen aan gegevensrasters die worden gebruikt door workflowontwerpers en activiteitsontwerpers.

    • Tabs door velden in de ReceiveReply en SendReply activiteiten.

    • Standaardwaarden instellen voor variabelen of argumenten

  • Schermlezers kunnen nu het volgende op de juiste manier herkennen:

    • Onderbrekingspunten die zijn ingesteld in de werkstroomontwerper.

    • De FlowSwitch<T>, FlowDecisionen CorrelationScope activiteiten.

    • De inhoud van de Receive activiteit.

    • Het doeltype voor de InvokeMethod activiteit.

    • De keuzelijst met invoervak Uitzondering en de sectie Ten slotte in de TryCatch activiteit.

    • De keuzelijst met invoervak Berichttype, de splitsfunctie in het venster Correlatie-initialisaties toevoegen, het venster Inhoudsdefinitie en het venster Correlerenon-definitie in de berichtenactiviteiten (Receive, Send, SendReplyen ).ReceiveReply

    • Statusmachineovergangen en overgangen naar bestemmingen.

    • Aantekeningen en connectors voor FlowDecision activiteiten.

    • De contextmenu's (met de rechtermuisknop) voor activiteiten.

    • De editors voor eigenschapswaarden, de knop Zoeken wissen, de sorteerknoppen Categorie en Alfabetisch en het dialoogvenster Expressie-editor in het eigenschappenraster.

    • Het zoompercentage in de werkstroomontwerper.

    • Het scheidingsteken in Parallel en Pick activiteiten.

    • De InvokeDelegate activiteit.

    • Het venster Typen selecteren voor woordenlijstactiviteiten (Microsoft.Activities.AddToDictionary<TKey,TValue>, Microsoft.Activities.RemoveFromDictionary<TKey,TValue>enzovoort).

    • Het venster Bladeren en .NET-type selecteren.

    • Breadcrumbs in de workflowontwerper.

  • Gebruikers die thema's met hoog contrast kiezen, zien veel verbeteringen in de zichtbaarheid van de workflowontwerper en de bijbehorende besturingselementen, zoals betere contrastverhoudingen tussen elementen en duidelijkere selectievakken die worden gebruikt voor focuselementen.

Zie ook