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 eenFont
eigenschap had die verschilt vanDefaultFont
. - 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
ofLocalizedControlType
opgegeven voor aangepaste DataGridViewCell elementen was. - De helderheidsverhouding is bijgewerkt naar 3,5:1 voor ToolStripButton besturingselementen die zijn
ToolStripRenderMode
ingesteld opSystem
. - 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.
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, SelectionTextBrush
waarmee 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:
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.UseLegacyToolTipDisplay
AppContext . 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. SizeOfSet
PositionInSet
Deze 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 voorSizeOfSet
enPositionInSet
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.3
Switch 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.3
AppContext-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:
De vervolgkeuzepijl van het ToolStripDropDownButton besturingselement.
De Button, RadioButton en CheckBox besturingselementen met FlatStyle ingesteld op FlatStyle.Flat of FlatStyle.Popup. Eerder waren geselecteerde tekst- en achtergrondkleuren niet contrasterend en waren ze moeilijk te lezen.
Besturingselementen die zijn opgenomen in een GroupBox eigenschap die is Enabled ingesteld op
false
.De ToolStripButton, ToolStripComboBoxen ToolStripDropDownButton besturingselementen, die een verhoogde helderheidscontrastverhouding hebben in de modus Hoog contrast.
De LinkColor eigenschap van de DataGridViewLinkCell.
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:
Rijen kunnen worden gesorteerd met behulp van het toetsenbord. Een gebruiker kan de F3-sleutel gebruiken om te sorteren op de huidige kolom.
De kolombreedte van de huidige cel kan worden verhoogd of verkleind met de + pijltoetsen alt-links/rechts.
Wanneer de DataGridView.SelectionMode kolomkop is ingesteld DataGridViewSelectionMode.FullRowSelect, wordt de kleur van de kolomkop gewijzigd om de huidige kolom aan te geven als de gebruiker door de cellen in de huidige rij loopt.
De AccessibleObject.Parent eigenschap van een object System.Windows.Forms.DataGridViewLinkCell.DataGridViewLinkCellAccessibleObject retourneert het juiste bovenliggende besturingselement.
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
- Het ToolStripButton besturingselement staat de focus toe wanneer deze zich in een ToolStripPanel besturingselement bevindt waarop de TabStop eigenschap is ingesteld
true
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:
De AutomationElementIdentifiers.LiveSettingProperty en AutomationElementIdentifiers.LiveRegionChangedEvent velden, waarmee de eigenschap LiveSetting en de gebeurtenis LiveRegionChanged worden geïdentificeerd. Ze kunnen worden ingesteld met behulp van XAML.
De eigenschap AutomationProperties.LiveSetting die de schermlezer informeert over het belang van de wijziging van de gebruikersinterface aan de gebruiker.
De AutomationProperties.LiveSettingProperty eigenschap, die de gekoppelde eigenschap AutomationProperties.LiveSetting identificeert.
De AutomationPeer.GetLiveSettingCore methode, die kan worden overschreven om een LiveSetting-waarde op te geven.
De AutomationProperties.GetLiveSetting en AutomationProperties.SetLiveSetting methoden, waarmee een LiveSetting-waarde wordt opgehaald en ingesteld.
De System.Windows.Automation.AutomationLiveSetting opsomming, waarmee de volgende mogelijke LiveSetting-waarden worden gedefinieerd:
AutomationLiveSetting.Off. Het element verzendt geen meldingen als de inhoud van de liveregio is gewijzigd.
AutomationLiveSetting.Polite. Het element verzendt niet-interruptieve meldingen als de inhoud van de liveregio is gewijzigd.
AutomationLiveSetting.Assertive. Het element verzendt interruptieve meldingen als de inhoud van de liveregio is gewijzigd.
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:
Na:
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:
Na:
ComboBox-besturingselement
Vanaf .NET Framework 4.7.1 is de rand van een uitgeschakeld besturingselement ComboBox dezelfde kleur als uitgeschakelde tekst. Voorbeeld:
Voor:
Na:
Bovendien gebruiken uitgeschakelde en gerichte knoppen de juiste themakleur.
Voor:
Na:
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:
Na:
DataGrid-besturingselement
Vanaf .NET Framework 4.7.1 gebruikt de sorteerindicatorpijl in DataGrid besturingselementen nu de juiste themakleuren. Voorbeeld:
Voor:
Na:
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:
Na:
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:
Na:
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:
Het ComboBox en ToolStripSplitButton nu ondersteunen het patroon uitvouwen/samenvouwen.
Het DataGridViewCheckBoxCell wisselpatroon wordt nu ondersteund.
Het ToolStripItem besturingselement ondersteunt de Name eigenschap en het patroon uitvouwen/samenvouwen.
De NumericUpDown en DomainUpDown besturingselementen ondersteunen de Name eigenschap.
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:
Het correlatievenster initialiseren voor het instellen van correlatiegegevens voor de InitializeCorrelation activiteit.
Het inhoudsdefinitievenster voor de Receive, Senden SendReplyReceiveReply activiteiten.
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.
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.