Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Program .NET Framework ma na celu zwiększenie dostępności aplikacji dla użytkowników. Funkcje ułatwień dostępu umożliwiają aplikacji zapewnienie odpowiedniego środowiska dla użytkowników technologii asystacyjnych. Począwszy od programu .NET Framework 4.7.1, program .NET Framework zawiera dużą liczbę ulepszeń ułatwień dostępu, które umożliwiają deweloperom tworzenie dostępnych aplikacji.
Przełączniki ułatwień dostępu
Możesz skonfigurować aplikację tak, aby zdecydowała się na funkcje ułatwień dostępu, jeśli jest przeznaczona dla programu .NET Framework 4.7 lub starszej wersji, ale jest uruchomiona w programie .NET Framework 4.7.1 lub nowszym. Możesz również skonfigurować aplikację tak, aby korzystała ze starszych funkcji (i nie korzysta z funkcji ułatwień dostępu), jeśli jest przeznaczona dla programu .NET Framework 4.7.1 lub nowszego. Każda wersja programu .NET Framework zawierająca funkcje ułatwień dostępu ma przełącznik ułatwień dostępu specyficzny dla wersji, który można dodać do <AppContextSwitchOverrides> elementu w <runtime> sekcji pliku konfiguracji aplikacji. Poniżej przedstawiono obsługiwane przełączniki:
| wersja | Przełącznik |
|---|---|
| .NET Framework 4.7.1 | Switch.UseLegacyAccessibilityFeatures |
| .NET Framework 4.7.2 | Switch.UseLegacyAccessibilityFeatures.2 |
| .NET Framework 4.8 | "Switch.UseLegacyAccessibilityFeatures.3" |
| 11 sierpnia 2020 r. zbiorcza aktualizacja KB4569746 programu .NET Framework 4.8 | Switch.UseLegacyAccessibilityFeatures.4 |
| .NET Framework 4.8.1 | Switch.UseLegacyAccessibilityFeatures.5 |
Korzystanie z ulepszeń ułatwień dostępu
Nowe funkcje ułatwień dostępu są domyślnie włączone dla aplikacji przeznaczonych dla programu .NET Framework 4.7.1 lub nowszego. Ponadto aplikacje przeznaczone dla starszej wersji programu .NET Framework, ale działają w programie .NET Framework 4.7.1 lub nowszym, mogą zrezygnować ze starszych zachowań ułatwień dostępu (a tym samym korzystać z ulepszeń ułatwień dostępu), dodając przełączniki do <AppContextSwitchOverrides> elementu w <runtime> sekcji pliku konfiguracji aplikacji i ustawiając ich wartość na false. Poniższy fragment kodu pokazuje, jak wyrazić zgodę na ulepszenia ułatwień dostępu wprowadzone w programie .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>
Jeśli zdecydujesz się na korzystanie z funkcji ułatwień dostępu w nowszej wersji programu .NET Framework, musisz również jawnie wyrazić zgodę na funkcje z wcześniejszych wersji. Aby skonfigurować aplikację do korzystania z ulepszeń ułatwień dostępu zarówno w programie .NET Framework 4.7.1, jak i 4.7.2, dodaj następujący <AppContextSwitchOverrides> element:
<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>
Aby skonfigurować aplikację do korzystania z ulepszeń ułatwień dostępu w programie .NET Framework 4.7.1, 4.7.2, 4.8 i aktualizacji zbiorczej programu .NET Framework 4.8 z sierpnia 2020 r., dodaj następujący <AppContextSwitchOverrides> element:
<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>
Przywracanie starszego zachowania
Aplikacje przeznaczone dla wersji programu .NET Framework, począwszy od wersji 4.7.1, mogą wyłączać funkcje ułatwień dostępu, dodając przełączniki do <AppContextSwitchOverrides> elementu w <runtime> sekcji pliku konfiguracji aplikacji i ustawiając ich wartość na true. Na przykład następująca konfiguracja zrezygnowała z funkcji ułatwień dostępu wprowadzonych w programie .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>
Co nowego w ułatwieniach dostępu w programie .NET Framework 4.8.1
Program .NET Framework 4.8.1 zawiera nowe funkcje ułatwień dostępu w następujących obszarach:
Windows Forms
Dodano i ulepszono reprezentacje UIA
Przed programem .NET Framework 4.8.1 w systemie Windows Forms brakuje obsługi szeregu wzorców UIA w celu obsługi technologii pomocniczej do interakcji z aplikacjami. Ten niedobór może spowodować, że Narrator lub inni czytelnicy zawartości ekranu będą zgłaszać niekompletne lub nieprawidłowe informacje. Może to również mieć wpływ na ważne funkcje, takie jak przenoszenie kursora przez tekst w kontrolce TextBox . W programie .NET Framework 4.8.1 zaimplementowano wszystkie wymagane wzorce dla typowych kontrolek. Ta nowa funkcja zapewnia użytkownikom technologii pomocniczej znacznie bogatsze środowisko interakcji z aplikacjami.
- Dodano obsługę wzorca rozwijania/zwijania interfejsu użytkownika do kontrolki DateTimePicker .
- Dodano obsługę UIA do kontrolki MonthCalendar. Teraz narzędzia technologii wspomagającej, takie jak Narrator, mogą nawigować po poszczególnych datach w kontrolce.
- Zaimplementowano obsługę wzorca tekstu dla wszystkich kontrolek opartych na tekście, w tym kontrolek TextBox, MaskedTextBox, PropertyGrid, kontroli edycji, DataGridViewTextBoxCell, ToolStripTextBox i DomainUpDown.
- ToolTip Teraz postępuje zgodnie z wytycznymi WCAG2.1 , aby być trwałym, odrzucalnym i unoszącym się w systemie Windows 11. Zmiany zachowania etykietki narzędzi są ograniczone do systemów Windows 11 z zainstalowanym programem .NET Framework 4.8.1 i mają zastosowanie tylko do aplikacji, w których limit czasu nie został ustawiony dla etykietki narzędzia. Podpowiedzi, które pozostają widoczne, można zamknąć za pomocą klawisza Esc lub klawisza Ctrl albo przechodząc do kontrolki z inną podpowiedzią.
Różne poprawki błędów dla istniejących funkcji ułatwień dostępu
- Narrator może teraz skupić się na pustej DataGridView kontrolce.
- Rozwiązano problem, który spowodował, że czytniki zawartości ekranu zliczyły ukryte kolumny podczas ogłaszania liczby kolumn w kontrolce DataGridView .
- Rozwiązano problem, który powodował, że DataGridView ignorował ustawienia czcionki w obiekcie
DataGridviewCellStyle, jeśli formularz bazowy miał właściwośćFont, która różniła się odDefaultFont. - Zaktualizowano
AccessibleNamewłaściwość DataGridView wewnętrznych pasków przewijania kontrolki, aby usunąć tekst "ScrollBar". - Naprawiono kolor komórki
DataGridViewLinkCellpo jej wybraniu. - Rozwiązano problem z kontrolkami niestandardowymiDataGridView, gdzie nie były dostarczone
ControlTypelubLocalizedControlTypedla niestandardowych elementów DataGridViewCell. - Zaktualizowano współczynnik jasności do wartości 3,5:1 dla ToolStripButton kontrolek z
ToolStripRenderModeustawioną wartościąSystem. - Ulepszona nawigacja klawiaturą w ToolStrip, gdy element jest typu
ToolStripComboBox. - Zaktualizowano kolor ToolStripButton tła w trybie dużego kontrastu.
- Upewnij się, że istnieje prostokąt ograniczenia zgłoszony do technologii pomocniczej dla elementu ToolStripSeparator.
- Rozwiązano problem, który mógł spowodować awarię czytnika ekranu JAWS podczas odczytywania kontrolki PropertyGrid .
- Upewniono się, że drzewo hierarchii UIA dla kontrolki PropertyGrid jest aktualizowane, gdy zostanie rozwinięty złożony wpis, taki jak
Font. Upewnij się również, że drzewo jest prawidłowo aktualizowane, gdy wpis zostanie zwinięty i nie będzie już widoczny. -
PropertyGrid kategorie mają teraz zlokalizowany typ sterowania
PropertyGrid category. - Rozwiązano problem z ComboBox, który mógł spowodować awarię aplikacji w narzędziu Accessibility Insights for Windows.
- Zaktualizowano kolor obramowania elementu Button , aby mieć większy kontrast w kolorach domyślnych.
- Włączono technologie wspomagające, aby umożliwić dostęp do
ControlBoxprzycisków zmaksymalizowanego formularza podrzędnego MDI. - Właściwość
AccessibleNamekontrolki DomainUpDown ma nową wartość domyślną pustego ciągu. Pusty ciąg zachęci deweloperów do utworzenia znaczącej nazwy zamiast akceptowania poprzedniej niepustej wartości domyślnej. - Zaktualizowano właściwość przycisku Drukuj
AccessibleNamew PrintPreviewDialog z "Przycisk wydruku" na "Drukuj", aby uniknąć nadmiarowości, gdy czytniki ekranu ogłaszają kontrolkę oraz jej typ. - Zaktualizowano kontrolki listy UIA, aby usunąć pusty element listy, gdy PropertyGrid komórka typu
ComboBoxjest zamknięta i nie jest już widoczna.
Windows Presentation Foundation (WPF)
Poprawa obsługi dostępnych podpowiedzi
W tej wersji WPF ulepszył doświadczenie użytkownika, zapewniając, że podpowiedź w bieżącym oknie można łatwo zamknąć za pomocą Esc, Ctrl (samo) lub kombinacji Ctrl+Shift+F10. Zakres klucza Esc został zmniejszony w tej wersji, aby zastosować go tylko do bieżącego okna, gdy wcześniej zastosowano go do dowolnej otwartej etykietki narzędzia w aplikacji. Domyślnie etykietki narzędzi WPF będą zgodne z wytycznymi WCAG2.1, które mają być trwałe, możliwe do odrzucenia i wyświetlane po najechaniu kursorem.
Co nowego w ułatwieniach dostępu w aktualizacji zbiorczej programu .NET Framework 4.8 z 11 sierpnia 2020 r.
Aktualizacja zbiorcza KB4569746 z 11 sierpnia 2020 r. dla .NET Framework 4.8 obejmuje nowe funkcje ułatwień dostępu w Windows Forms:
Rozwiązuje problem z ogłaszaniem
PropertyGridelementów kontrolek i rozwiniętym/zwiniętym stanem kategorii przez czytniki zawartości ekranu.Aktualizuje dostępne wzorce kontrolki
PropertyGridi jej elementów wewnętrznych.Aktualizuje dostępne nazwy elementów wewnętrznych kontrolki
PropertyGrid, aby były one poprawnie ogłaszane przez czytniki ekranu.Ustawia właściwości dostępności prostokąta obwiedni dla kontrolek
PropertyGridView.Umożliwia czytnikom ekranu poprawne komunikowanie stanu rozwinięcia/zwinęcia komórek pola kombi
DataGridView.
Co nowego w ułatwieniach dostępu w programie .NET Framework 4.8
Program .NET Framework 4.8 zawiera nowe funkcje ułatwień dostępu w następujących obszarach:
Windows Forms
W programie .NET Framework 4.8 formularze systemu Windows dodają obsługę LiveRegions i Zdarzeń Powiadomień do wielu powszechnie używanych kontrolek. Dodaje również obsługę etykietek narzędzi, gdy użytkownik przechodzi do kontrolki przy użyciu klawiatury.
Obsługa Live Regions w UIA w etykietach i StatusStrips
UIA LiveRegions umożliwiają deweloperom aplikacji powiadamianie czytników zawartości ekranu o zmianie tekstu w kontrolce znajdującej się poza lokalizacją, w której pracuje użytkownik. Jest to przydatne, na przykład w przypadku StatusStrip kontrolki, która pokazuje stan połączenia. Jeśli połączenie zostanie przerwane i zmieni się stan, deweloper może chcieć powiadomić czytnik zawartości ekranu.
Począwszy od programu .NET Framework 4.8, windows Forms implementuje UIA LiveRegions dla kontrolek Label i StatusStrip . Na przykład poniższy kod używa elementu LiveRegion w kontrolce Label o nazwie label1:
public Form1()
{
InitializeComponent();
label1.AutomationLiveSetting = AutomationLiveSetting.Polite;
}
…
Label1.Text = "Ready!";
Narrator ogłasza komunikat "Ready" niezależnie od tego, gdzie użytkownik wchodzi w interakcję z aplikacją.
Możesz również zaimplementować element UserControl jako LiveRegion:
using System;
using System.Windows.Forms;
using System.Windows.Forms.Automation;
namespace WindowsFormsApplication
{
public partial class UserControl1 : UserControl, IAutomationLiveRegion
{
public UserControl1()
{
InitializeComponent();
}
public AutomationLiveSetting AutomationLiveSetting { get; set; }
private AutomationLiveSetting IAutomationLiveRegion.GetLiveSetting()
{
return this.AutomationLiveSetting;
}
protected override void OnTextChanged(EventArgs e)
{
base.OnTextChanged(e);
AutomationNotifications.UiaRaiseLiveRegionChangedEvent(this.AccessibilityObject);
}
}
}
Zdarzenia powiadomień UIA
Zdarzenie powiadomienia UIA wprowadzone w aktualizacji Fall Creators Update systemu Windows 10 umożliwia aplikacji zgłaszanie zdarzenia UIA, co prowadzi narratora po prostu do ogłoszenia na podstawie tekstu dostarczanego ze zdarzeniem, bez konieczności posiadania odpowiedniej kontroli w interfejsie użytkownika. W niektórych scenariuszach jest to prosty sposób na znaczne zwiększenie dostępności aplikacji. Może być również przydatne informowanie o postępie niektórych procesów, które mogą zająć dużo czasu. Aby uzyskać więcej informacji na temat zdarzeń powiadomień UIA, zobacz Czy Twoja aplikacja klasyczna może wykorzystywać nowe zdarzenie powiadomienia UI?.
W poniższym przykładzie jest wywoływane zdarzenie Powiadomienia:
MethodInfo raiseMethod = typeof(AccessibleObject).GetMethod("RaiseAutomationNotification");
if (raiseMethod != null) {
raiseMethod.Invoke(progressBar1.AccessibilityObject, new object[3] {/*Other*/ 4, /*All*/ 2, "The progress is 50%." });
}
Etykietki narzędzi na dostępie za pomocą klawiatury
W aplikacjach przeznaczonych dla programu .NET Framework 4.7.2 i starszych wersji etykietka narzędzia sterującego może zostać wyzwolona tylko przez przeniesienie wskaźnika myszy do kontrolki. Począwszy od wersji .NET Framework 4.8, użytkownik klawiatury może wywołać dymek kontrolki, ustawiając fokus na kontrolce przy użyciu klawisza Tab lub klawiszy strzałek z klawiszami modyfikującymi lub bez nich. To szczególne rozszerzenie ułatwień dostępu wymaga dodatkowego przełącznika AppContext:
<?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>
Na poniższej ilustracji przedstawiono podpowiedź, gdy użytkownik wybrał przycisk za pomocą klawiatury.
Windows Presentation Foundation (WPF)
Począwszy od programu .NET Framework 4.8, WPF zawiera szereg ulepszeń ułatwień dostępu.
Ekranowe programy narracyjne nie ogłaszają już elementów ze zwiniętą lub ukrytą widocznością
Elementy ze zwiniętą lub ukrytą widocznością nie są już ogłaszane przez czytnik ekranu. Interfejsy użytkownika zawierające elementy z widocznością Visibility.Collapsed lub Visibility.Hidden mogą być błędnie reprezentowane przez czytniki zawartości ekranu, jeśli zostaną one ogłoszone użytkownikowi. Począwszy od programu .NET Framework 4.8, WPF nie zawiera już zwiniętych lub ukrytych elementów w widoku sterowania drzewa UIAutomation, dzięki czemu czytniki zawartości ekranu nie mogą już ogłaszać tych elementów.
Właściwość SelectionTextBrush do użycia z wyborem tekstu bez użycia Adornera
W .NET Framework 4.7.2 dodano do WPF możliwość rysowania zaznaczenia tekstu TextBox i PasswordBox bez używania warstwy Adorner. Kolor pierwszego planu zaznaczonego tekstu w tym scenariuszu został określony przez SystemColors.HighlightTextBrush.
Program .NET Framework 4.8 dodaje nową właściwość SelectionTextBrush, która umożliwia deweloperom wybranie określonego pędzla dla zaznaczonego tekstu podczas korzystania z zaznaczenia tekstu bez użycia Adorner. Ta właściwość działa tylko na kontrolkach pochodnych TextBoxBase i kontrolce PasswordBox w aplikacjach WPF z włączonym zaznaczeniem tekstu, które nie jest oparte na Adornerze. Nie działa w kontrolce RichTextBox . Jeśli nie włączono zaznaczenia tekstu nienależące do modułu adoratora, ta właściwość jest ignorowana.
Aby użyć tej właściwości, po prostu dodaj ją do kodu XAML i użyj odpowiedniego pędzla lub powiązania. Wynikowy wybór tekstu wygląda następująco:
Możesz połączyć użycie właściwości SelectionBrush i SelectionTextBrush, aby wygenerować dowolną kombinację kolorów tła i pierwszego planu, którą uznasz za odpowiednią.
Obsługa właściwości ControllerFor w UIAutomation
Właściwość UIAutomation ControllerFor zwraca tablicę elementów automatyzacji, które są manipulowane przez element automatyzacji, który obsługuje tę właściwość. Ta właściwość jest często używana w przypadku ułatwień dostępu sugerowanych automatycznie.
ControllerFor jest używany, gdy element automatyzacji wpływa na co najmniej jeden segment interfejsu użytkownika aplikacji lub pulpitu. W przeciwnym razie trudno jest skojarzyć wpływ operacji sterowania z elementami interfejsu użytkownika. Funkcja ta umożliwia kontrolkom dostarczanie wartości dla właściwości ControllerFor.
Program .NET Framework 4.8 dodaje nową metodę wirtualną. GetControlledPeersCore() Aby podać wartość właściwości ControllerFor, wystarczy przesłonić tę metodę i zwrócić element List<AutomationPeer> dla kontrolek manipulowanych przez AutomationPeer.
public class AutoSuggestTextBox: TextBox
{
protected override AutomationPeer OnCreateAutomationPeer()
{
return new AutoSuggestTextBoxAutomationPeer(this);
}
public ListBox SuggestionListBox;
}
internal class AutoSuggestTextBoxAutomationPeer : TextBoxAutomationPeer
{
public AutoSuggestTextBoxAutomationPeer(AutoSuggestTextBox owner) : base(owner)
{
}
protected override List<AutomationPeer> GetControlledPeersCore()
{
List<AutomationPeer> controlledPeers = new List<AutomationPeer>();
AutoSuggestTextBox owner = Owner as AutoSuggestTextBox;
controlledPeers.Add(UIElementAutomationPeer.CreatePeerForElement(owner.SuggestionListBox));
return controlledPeers;
}
}
Podpowiedzi podczas używania klawiatury
W programie .NET Framework 4.7.2 i starszych wersjach etykietki narzędzi są wyświetlane tylko wtedy, gdy użytkownik najecha kursorem myszy na kontrolkę. W programie .NET Framework 4.8 etykietki narzędzi są również wyświetlane na fokusie klawiatury, a także za pomocą skrótu klawiaturowego.
Aby włączyć tę funkcję, aplikacja musi obsługiwać wersję 4.8 platformy .NET Framework lub można ją włączyć za pomocą przełączników Switch.UseLegacyAccessibilityFeatures.3 i Switch.UseLegacyToolTipDisplayAppContext. Poniżej przedstawiono przykładowy plik konfiguracji aplikacji:
<?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>
Po włączeniu wszystkie kontrolki zawierające etykietę narzędziową wyświetlają ją, gdy kontrolka otrzymuje fokus klawiatury. Etykietka narzędzia może zostać odrzucona w czasie lub po zmianie fokusu klawiatury. Użytkownicy mogą również ręcznie odrzucić etykietkę narzędzia przy użyciu nowego skrótu klawiaturowego Ctrl+Shift+F10. Po odrzuceniu etykietki narzędzia można ją wyświetlić ponownie za pomocą tego samego skrótu klawiaturowego.
Uwaga / Notatka
Etykietki narzędzi wstążki na Ribbon kontrolkach nie będą wyświetlane na fokusie klawiatury; są one wyświetlane tylko za pomocą skrótu klawiaturowego.
Dodano obsługę dla atrybutów SizeOfSet i PositionInSet w UIAutomation
System Windows 10 wprowadził dwie nowe właściwości SizeOfSet i PositionInSet UIAutomation, które są używane przez aplikacje do opisywania liczby elementów w zestawie. Aplikacje klienckie UIAutomation, takie jak czytniki ekranu, mogą następnie wysyłać zapytania o te właściwości i dokładnie przedstawiać interfejs użytkownika aplikacji.
Począwszy od programu .NET Framework 4.8, WPF udostępnia te dwie właściwości dla UIAutomation w aplikacjach WPF. Można to zrobić na dwa sposoby:
Przy użyciu właściwości zależności.
WPF dodaje dwie nowe właściwości zależności AutomationProperties.SizeOfSet i AutomationProperties.PositionInSet. Deweloper może użyć języka XAML, aby ustawić swoje wartości:
<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>Poprzez zastąpienie wirtualnych metod AutomationPeer.
Metody GetSizeOfSetCore() i GetPositionInSetCore() zostały dodane do klasy
AutomationPeer. Deweloper może podać wartości dlaSizeOfSetiPositionInSetprzez przesłonięcie tych metod, jak pokazano w poniższym przykładzie.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(); } }
Ponadto elementy w ItemsControl wystąpieniach automatycznie zapewniają wartość tych właściwości bez dodatkowego działania ze strony dewelopera. Jeśli element ItemsControl jest pogrupowany, kolekcja grup jest reprezentowana jako zestaw, a każda grupa jest liczone jako oddzielny zestaw, a każdy element wewnątrz tej grupy zapewnia jego pozycję wewnątrz tej grupy, a także rozmiar grupy. Na wartości automatyczne nie ma wpływu wirtualizacja. Nawet jeśli element nie jest skończony, nadal jest wliczany do całkowitego rozmiaru zestawu i wpływa na pozycję w zestawie względem innych elementów.
Wartości automatyczne są udostępniane tylko wtedy, gdy aplikacja jest przeznaczona dla programu .NET Framework 4.8. W przypadku aplikacji przeznaczonych dla starszej wersji programu .NET Framework można ustawić Switch.UseLegacyAccessibilityFeatures.3przełącznik AppContext, jak pokazano w następującym pliku App.config:
<?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>
Projektant przepływu pracy programu Windows Workflow Foundation (WF)
Projektant funkcji przepływu pracy wprowadza następujące zmiany w .NET Framework 4.8:
Użytkownicy korzystający z Narratora zauważą ulepszenia w etykietach przypadków FlowSwitch.
Użytkownicy korzystający z Narratora zobaczą ulepszenia opisów przycisków.
Użytkownicy, którzy wybierają motywy o wysokim kontraście, zobaczą ulepszenia widoczności projektanta przepływu pracy i jego kontrolek, takie jak lepsze współczynniki kontrastu między elementami i bardziej zauważalne pola wyboru używane do elementów koncentracji uwagi.
Jeśli aplikacja jest przeznaczona dla programu .NET Framework 4.7.2 lub starszej wersji, możesz wyrazić zgodę na te zmiany, ustawiając Switch.UseLegacyAccessibilityFeatures.3przełącznik AppContext w false pliku konfiguracji aplikacji. Aby uzyskać więcej informacji, zobacz sekcję Korzystanie z ulepszeń ułatwień dostępu w tym artykule.
Co nowego w ułatwieniach dostępu w programie .NET Framework 4.7.2
Program .NET Framework 4.7.2 zawiera nowe funkcje ułatwień dostępu w następujących obszarach:
Windows Forms
Kolory zdefiniowane przez system operacyjny w motywach o wysokim kontraście
Począwszy od programu .NET Framework 4.7.2, formularze systemu Windows używają kolorów zdefiniowanych przez system operacyjny w motywach wysokiego kontrastu. Ma to wpływ na następujące kontrolki:
Strzałka rozwijania kontrolki ToolStripDropDownButton.
Button, RadioButton i CheckBox kontrolki z ustawieniem FlatStyle na FlatStyle.Flat lub FlatStyle.Popup. Wcześniej zaznaczone kolory tekstu i tła nie były kontrastujące i były trudne do odczytania.
Kontrolki zawarte w obiekcie GroupBox, które mają właściwość Enabled ustawioną na
false.Kontrolki ToolStripButton, ToolStripComboBox i ToolStripDropDownButton, które mają zwiększony współczynnik kontrastu jaskrawości w Trybie Dużego Kontrastu.
Właściwość LinkColor z DataGridViewLinkCell.
Ulepszenia narratora
Począwszy od programu .NET Framework 4.7.2, obsługa narratora jest rozszerzona w następujący sposób:
Ogłasza wartość ToolStripMenuItem.ShortcutKeys właściwości podczas ogłaszania tekstu elementu ToolStripMenuItem.
Wskazuje, kiedy ToolStripMenuItem ma właściwość Enabled ustawioną na
false.Podaje informację zwrotną na temat stanu pola wyboru, gdy właściwość ListView.CheckBoxes jest ustawiona na
true.Kolejność koncentracji uwagi w trybie skanowania narratora jest zgodna z kolejnością wizualną kontrolek w oknie dialogowym pobierania ClickOnce.
Ulepszenia elementu DataGridView
Począwszy od programu .NET Framework 4.7.2, kontrolka DataGridView wprowadziła następujące ulepszenia ułatwień dostępu:
Wiersze można sortować przy użyciu klawiatury. Użytkownik może użyć F3 , aby posortować według bieżącej kolumny.
Szerokość kolumny bieżącej komórki można zwiększyć lub zmniejszyć za pomocą strzałek Alt + w lewo/w prawo .
Gdy DataGridView.SelectionMode jest ustawione na DataGridViewSelectionMode.FullRowSelect, nagłówek kolumny zmienia kolor, aby wskazać bieżącą kolumnę, gdy użytkownik przemieszcza się po komórkach w bieżącym wierszu.
Właściwość AccessibleObject.Parent obiektu System.Windows.Forms.DataGridViewLinkCell.DataGridViewLinkCellAccessibleObject zwraca właściwą kontrolkę nadrzędną.
Ulepszone podpowiedzi wizualne
- Kontrolki RadioButton i CheckBox z pustą Text właściwością wyświetlają wskaźnik koncentracji uwagi po otrzymaniu fokusu.
Ulepszona obsługa siatki właściwości
Elementy podrzędne kontrolki PropertyGrid teraz zwracają
truedla właściwości IsReadOnlyProperty tylko wtedy, gdy włączony jest element PropertyGrid.Elementy podrzędne kontrolki PropertyGrid zwracają wartość IsEnabledProperty dla właściwości
falsetylko wtedy, gdy użytkownik może zmienić element PropertyGrid.
Ulepszona nawigacja za pomocą klawiatury
- Kontrolka ToolStripButton zezwala na fokus, gdy znajduje się w obiekcie ToolStripPanel , który ma właściwość ustawioną TabStop na
true
Windows Presentation Foundation (WPF)
Zmiany kontrolek CheckBox i RadioButton
W programie .NET Framework 4.7.1 i starszych wersjach kontrolki WPF System.Windows.Controls.CheckBox i System.Windows.Controls.RadioButton mają niespójne motywy oraz w motywach klasycznych i wysokich kontrastów niepoprawne wizualizacje fokusu. Te problemy występują w przypadkach, gdy kontrolki nie mają żadnego zestawu zawartości. Może to utrudnić przejście między motywami i sprawić, że wizualizacja fokusu będzie trudna do zauważenia.
W programie .NET Framework 4.7.2 te wizualizacje są teraz bardziej spójne w motywach i łatwiej widoczne w motywach klasycznych i wysokich kontrastów.
Kontrolki WinForms hostowane w aplikacji WPF
W przypadku kontrolki WinForms hostowanej w aplikacji WPF w programie .NET Framework 4.7.1 i starszych wersjach użytkownicy nie mogli przejść z warstwy WinForms za pomocą klawisza Tab, jeśli pierwszą lub ostatnią kontrolką w tej warstwie była kontrolka WPF ElementHost. W .NET Framework 4.7.2 użytkownicy mogą teraz przechodzić za pomocą klawisza Tab poza warstwę WinForms.
Jednak zautomatyzowane aplikacje, które opierają się na tym, że fokus nie opuszcza warstwy WinForms, mogą przestać działać zgodnie z oczekiwaniami.
Co nowego w ułatwieniach dostępu w programie .NET Framework 4.7.1
Program .NET Framework 4.7.1 zawiera nowe funkcje ułatwień dostępu w następujących obszarach:
Windows Presentation Foundation (WPF)
Ulepszenia czytnika zawartości ekranu
Jeśli włączono ulepszenia ułatwień dostępu, program .NET Framework 4.7.1 zawiera następujące ulepszenia wpływające na czytniki zawartości ekranu:
W .NET Framework 4.7 i starszych wersjach kontrolki Expander były interpretowane przez czytniki ekranu jako przyciski. Począwszy od programu .NET Framework 4.7.1, są one poprawnie ogłaszane jako grupy możliwe do rozwinięcia/zwijane.
W programie .NET Framework 4.7 i starszych wersjach, kontrolki DataGridCell były odczytywane przez czytniki ekranu jako "niestandardowe". Począwszy od programu .NET Framework 4.7.1, są one teraz poprawnie ogłaszane jako komórka siatki danych (zlokalizowana).
Począwszy od programu .NET Framework 4.7.1, czytniki ekranu informują o nazwie edytowalnego elementu ComboBox.
W programie .NET Framework 4.7 i starszych wersjach kontrolki PasswordBox zostały ogłoszone jako "brak elementu w widoku" lub miały niepoprawne zachowanie. Ten problem został rozwiązany, począwszy od programu .NET Framework 4.7.1.
Obsługa interfejsu użytkownikaAutomation LiveRegion
Czytniki ekranu, takie jak Narrator, pomagają użytkownikom w odczytywaniu treści interfejsu aplikacji, zazwyczaj poprzez wykorzystanie technologii zamiany tekstu na mowę dla elementów, które są obecnie w centrum uwagi. Jeśli jednak element interfejsu użytkownika ulegnie zmianie i nie ma fokusu, użytkownik może nie zostać powiadomiony i może przegapić ważne informacje. "Interaktywne regiony mają na celu rozwiązanie tego problemu." Deweloper może ich używać do informowania czytnika zawartości ekranu lub innego klienta interfejsu użytkownikaAutomation o wprowadzeniu ważnych zmian w elemecie interfejsu użytkownika. Czytnik zawartości ekranu może następnie zdecydować, jak i kiedy poinformować użytkownika o tej zmianie.
Aby obsługiwać regiony na żywo, do WPF dodano następujące interfejsy API:
Pola AutomationElementIdentifiers.LiveSettingProperty i AutomationElementIdentifiers.LiveRegionChangedEvent identyfikujące
LiveSettingwłaściwość iLiveRegionChangedzdarzenie. Można je ustawić przy użyciu języka XAML.Dołączona właściwość AutomationProperties.LiveSetting, która informuje czytnik ekranu o znaczeniu zmiany interfejsu użytkownika dla użytkownika.
Właściwość AutomationProperties.LiveSettingProperty identyfikującą właściwość AutomationProperties.LiveSetting dołączoną.
Metoda AutomationPeer.GetLiveSettingCore, która może zostać zastąpiona, aby podać wartość
LiveSetting.Metody AutomationProperties.GetLiveSetting i AutomationProperties.SetLiveSetting , które pobierają i ustawiają
LiveSettingwartość.Wyliczenie System.Windows.Automation.AutomationLiveSetting , które definiuje następujące możliwe
LiveSettingwartości:AutomationLiveSetting.Off. Element nie wysyła powiadomień, jeśli zawartość regionu na żywo uległa zmianie.
AutomationLiveSetting.Polite. Element wysyła powiadomienia nie przerywające, jeśli zawartość regionu na żywo uległa zmianie.
AutomationLiveSetting.Assertive. Element wysyła powiadomienia przerywające, jeśli zawartość regionu na żywo uległa zmianie.
Możesz utworzyć region LiveRegion, ustawiając właściwość AutomationProperties.LiveSetting na interesującym go elemenie, jak pokazano w poniższym przykładzie:
<TextBlock Name="myTextBlock" AutomationProperties.LiveSetting="Assertive">announcement</TextBlock>
Gdy dane w regionie na żywo ulegają zmianie i musisz poinformować czytnik ekranu, jawnie zgłaszasz zdarzenie, jak pokazano w poniższym przykładzie.
var peer = FrameworkElementAutomationPeer.FromElement(myTextBlock);
peer.RaiseAutomationEvent(AutomationEvents.LiveRegionChanged);
Dim peer = FrameworkElementAutomationPeer.FromElement(myTextBlock)
peer.RaiseAutomationEvent(AutomationEvents.LiveRegionChanged)
Duży kontrast
Począwszy od .NET Framework 4.7.1, w trybie wysokiego kontrastu wprowadzono ulepszenia do różnych kontrolek WPF. Są one teraz widoczne po ustawieniu motywu HighContrast . Są to:
Expander kontrola
Wizualizacja fokusu dla kontrolki Expander jest teraz widoczna. Wizualizacje klawiatury dla kontrolek ComboBox, ListBox i RadioButton są również widoczne. Przykład:
Przed:
After:
CheckBox i RadioButton kontrolki
Tekst w kontrolkach CheckBox i RadioButton jest teraz łatwiejszy do dostrzeżenia po wybraniu w motywach o wysokim kontraście. Przykład:
Przed:
After:
ComboBox kontrola
Począwszy od programu .NET Framework 4.7.1, obramowanie wyłączonej ComboBox kontrolki jest tym samym kolorem co wyłączony tekst. Przykład:
Przed:
After:
Ponadto nieaktywne i skoncentrowane przyciski używają poprawnego koloru motywu.
Przed:
After:
Na koniec, w programie .NET Framework 4.7 i starszych wersjach, ustawienie stylu kontrolki na
Toolbar.ComboBoxStyleKeyspowodowało, że strzałka listy rozwijanej była niewidoczna. Ten problem został rozwiązany, począwszy od programu .NET Framework 4.7.1. Przykład:Przed:
After:
DataGrid kontrola
Począwszy od programu .NET Framework 4.7.1, strzałka wskaźnika sortowania w DataGrid kontrolkach używa teraz poprawnych kolorów motywu. Przykład:
Przed:
After:
Ponadto, w programie .NET Framework 4.7 i starszych wersjach, domyślny styl łącza zmieniał się na nieprawidłowy kolor podczas najechania myszą w trybach wysokiego kontrastu. Rozwiązano ten problem, począwszy od programu .NET Framework 4.7.1. DataGrid Podobnie kolumny pól wyboru używają oczekiwanych kolorów dla opinii fokusu klawiatury, począwszy od programu .NET Framework 4.7.1.
Przed:
After:
Aby uzyskać więcej informacji na temat ulepszeń ułatwień dostępu WPF w programie .NET Framework 4.7.1, zobacz Ulepszenia ułatwień dostępu w WPF.
Ulepszenia ułatwień dostępu formularzy systemu Windows
W programie .NET Framework 4.7.1 formularze systemu Windows (WinForms) zawierają zmiany ułatwień dostępu w następujących obszarach.
Ulepszony ekran w trybie dużego kontrastu
Począwszy od programu .NET Framework 4.7.1, różne kontrolki WinForms oferują ulepszone renderowanie w trybach HighContrast dostępnych w systemie operacyjnym. System Windows 10 zmienił wartości niektórych kolorów systemowych o dużym kontraście, a formularze systemu Windows są oparte na strukturze Windows 10 Win32. Aby uzyskać najlepsze doświadczenie, uruchom na najnowszej wersji systemu Windows i skorzystaj z najnowszych zmian w systemie operacyjnym, dodając plik o nazwie app.manifest w aplikacji testowej i usunąć komentarz z wiersza obsługiwanego systemu operacyjnego Windows 10, aby wyglądał następująco:
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
Oto kilka przykładów zmian o dużym kontraście:
Zaznaczenia w MenuStrip elementach są łatwiejsze do zobaczenia.
Po wybraniu wyłączone MenuStrip elementy są łatwiejsze do wyświetlenia.
Tekst w wybranej Button kontrolce kontrastuje z kolorem zaznaczenia.
Wyłączony tekst jest łatwiejszy do odczytania. Przykład:
Przed:
After:
Ulepszenia wysokiego kontrastu w oknie dialogowym Wyjątek wątku.
Ulepszona obsługa narratora
Formularze systemu Windows w programie .NET Framework 4.7.1 zawierają następujące ulepszenia ułatwień dostępu dla Narratora:
Dostęp MonthCalendar do kontrolki można uzyskać za pomocą Narratora, a także innych narzędzi automatyzacji interfejsu użytkownika.
Kontrolka CheckedListBox powiadamia Narratora o zmianie stanu sprawdzania elementu, aby użytkownik był powiadamiany o zmianie wartości elementu listy.
Kontrolka DataGridViewCell zgłasza prawidłowy stan tylko do odczytu narratorowi.
Narrator może teraz odczytywać wyłączony ToolStripMenuItem tekst, natomiast wcześniej pomijał wyłączone elementy menu.
Ulepszona obsługa wzorców dostępności UIAutomation
Począwszy od programu .NET Framework 4.7.1, deweloperzy narzędzi technologii ułatwień dostępu mogą korzystać z typowych wzorców ułatwień dostępu interfejsu API i właściwości dla kilku kontrolek WinForms. Te ulepszenia ułatwień dostępu obejmują:
Element ComboBox i ToolStripSplitButton teraz wspierają wzorzec rozwijania/zwijania.
Teraz DataGridViewCheckBoxCell obsługuje wzorzec przełącznika.
Kontrolka ToolStripItem obsługuje Name właściwość i wzorzec rozwijania/zwijania.
Kontrolki NumericUpDown i DomainUpDown obsługują Name właściwość .
Ulepszone doświadczenie przeglądania właściwości
Począwszy od programu .NET Framework 4.7.1, formularze systemu Windows obejmują:
- Lepsza nawigacja za pomocą klawiatury w różnych oknach list rozwijanych.
- Zmniejszenie liczby niepotrzebnych tabulatorów.
- Lepsze raportowanie typów kontrolek.
- Ulepszone zachowanie narratora.
ASP.NET kontrolki sieci Web
Począwszy od programów .NET Framework 4.7.1 i Visual Studio 2017 w wersji 15.3, ASP.NET ulepsza sposób pracy kontrolek internetowych ASP.NET z technologią ułatwień dostępu w programie Visual Studio. Zmiany obejmują następujące elementy:
Zmiany w implementacji brakujących wzorców ułatwień dostępu interfejsu użytkownika w kontrolkach, takich jak okno dialogowe Dodawanie pola w kreatorze Widok szczegółów lub okno dialogowe Konfigurowanie widoku listy w kreatorze ListView.
Zmiany w celu ulepszenia wyświetlania w trybie dużego kontrastu, takich jak Edytor pól pagera danych.
Zmiany w celu ulepszenia doświadczenia nawigacji klawiaturą dla kontrolek, takich jak okno dialogowe Pola w kreatorze Edytuj Pola Pagera kontrolki DataPager, okno dialogowe Konfiguruj obiekt Kontekstu lub okno dialogowe Konfiguruj wybór danych kreatora Konfiguruj źródło danych.
Narzędzia zestawu SDK platformy .NET
Narzędzie edytora konfiguracji (SvcConfigEditor.exe) i narzędzie podglądu śledzenia usługi (SvcTraceViewer.exe) zostały ulepszone przez rozwiązywanie różnych problemów z ułatwieniami dostępu. Większość z nich to małe problemy, takie jak nazwa niezdefiniowana lub niektóre wzorce automatyzacji interfejsu użytkownika nie są prawidłowo implementowane. Chociaż wielu użytkowników nie będzie wiedzieć o tych nieprawidłowych wartościach, klienci korzystający z technologii pomocniczych, takich jak czytniki zawartości ekranu, znajdą te narzędzia zestawu SDK bardziej dostępne.
Te ulepszenia zmieniają niektóre poprzednie zachowania, takie jak kolejność koncentracji uwagi klawiatury.
Projektant przepływu pracy programu Windows Workflow Foundation (WF)
Zmiany ułatwień dostępu w projektancie przepływu pracy obejmują następujące elementy:
Kolejność karty zmienia się w lewo do prawej i u góry do dołu w niektórych kontrolkach:
Okno inicjalizacji korelacji służące do ustawiania danych korelacji dla aktywności InitializeCorrelation.
Okno definicji zawartości dla działań Receive, Send, SendReply i ReceiveReply.
Więcej funkcji jest dostępnych za pomocą klawiatury:
Podczas edytowania właściwości działania, grupy właściwości mogą być zwinięte za pomocą klawiatury, gdy są pierwszy raz ustawione jako aktywne.
Ikony ostrzeżeń są dostępne za pomocą klawiatury.
Przycisk Więcej właściwości w oknie Właściwości jest dostępny za pomocą klawiatury.
Użytkownicy klawiatury mogą uzyskiwać dostęp do elementów nagłówka w okienkach Argumenty i zmienne projektanta przepływu pracy.
Ulepszona widoczność elementów z fokusem, na przykład w następujących przypadkach:
Dodawanie wierszy do siatek danych używanych przez projektanta przepływu pracy i projektantów działań.
Przechodzenie przez pola w działaniach ReceiveReply i SendReply.
Ustawianie wartości domyślnych zmiennych lub argumentów
Czytniki zawartości ekranu mogą teraz poprawnie rozpoznać:
Punkty przerwania ustawione w edytorze przepływu pracy.
Działania FlowSwitch<T>, FlowDecision, i CorrelationScope.
Zawartość Receive aktywności.
Typ docelowy InvokeMethod działania.
Pole kombi Wyjątek i sekcja Finally w TryCatch działaniu.
Pole kombi Typ komunikatu, splitter w oknie Dodawanie inicjatorów korelacji, okno Definicja zawartości i okno Koreluj definicję w działaniach obsługi komunikatów (Receive, Send, SendReplyi ReceiveReply).
Przejścia i miejsca docelowe przejść maszyny stanów.
Adnotacje i łączniki dotyczące FlowDecision działań.
Menu kontekstowe (kliknij prawym przyciskiem myszy) dla działań.
Edytory wartości właściwości, przycisk Wyczyść wyszukiwanie, przyciski Według kategorii i sortowania alfabetycznego oraz okno dialogowe Edytor wyrażeń w siatce właściwości.
Procent powiększenia w Projektancie przepływu pracy.
Działanie InvokeDelegate .
Okno Wybór typów dla działań słownika (
Microsoft.Activities.AddToDictionary<TKey,TValue>,Microsoft.Activities.RemoveFromDictionary<TKey,TValue>, itp.).Okno Przeglądaj i Wybierz typ platformy .NET.
Ścieżka nawigacyjna w projektancie przepływu pracy.
Użytkownicy, którzy wybierają motywy o wysokim kontraście, zobaczą wiele ulepszeń widoczności projektanta przepływu pracy i jego kontrolek, takich jak lepsze współczynniki kontrastu między elementami i bardziej zauważalne pola wyboru używane dla elementów fokusu.