Обучение
Модуль
Создание веб-приложений со специальными возможностями с помощью ASP.NET Core - Training
Диагностика и устранение распространенных проблем со специальными возможностями в веб-приложении ASP.NET Core.
Этот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
Платформа .NET Framework ориентирована на то, чтобы сделать приложения более доступными для ваших пользователей. Специальные возможности позволяют приложению предоставлять соответствующую функциональность пользователям технологий с поддержкой специальных возможностей. Начиная с .NET Framework 4.7.1 платформа .NET Framework включает большое число улучшений специальных возможностей, позволяющих разработчикам создавать доступные приложения.
Вы можете включить в приложении функции специальных возможностей, если оно предназначено для .NET Framework 4.7 или более ранней версии, но выполняется на платформе .NET Framework 4.7.1 или более поздней версии. Вы также можете настроить в приложении использование компонентов прежних версий (и не использовать преимущества функций специальных возможностей), если оно предназначено для .NET Framework 4.7.1 или более поздней версии. У каждой версии платформы .NET Framework с функциями специальных возможностей есть специальный переключатель, который можно добавить в элемент <AppContextSwitchOverrides>
в разделе <runtime>
файла конфигурации приложения. Ниже приведены поддерживаемые переключатели:
Версия | Switch |
---|---|
.NET Framework 4.7.1 | "Switch.UseLegacyAccessibilityFeatures" |
.NET Framework 4.7.2. | "Switch.UseLegacyAccessibilityFeatures.2" |
.NET Framework 4.8 | "Switch.UseLegacyAccessibilityFeatures.3" |
Накопительный пакет обновления KB4569746 для платформы .NET Framework 4.8 от 11 августа 2020 г. | "Switch.UseLegacyAccessibilityFeatures.4" |
платформа .NET Framework 4.8.1 | Switch.UseLegacyAccessibilityFeatures.5" |
Новые специальные возможности включены по умолчанию для приложений, предназначенных для .NET Framework 4.7.1 или более поздней версии. Кроме того, приложения, которые предназначены для более ранней версии .NET Framework, но работают на платформе .NET Framework 4.7.1 или более поздней версии, могут явно отказаться от устаревших вариантов специальных возможностей (и тем самым согласиться на использование улучшений специальных возможностей). Для этого добавьте параметры в элемент <AppContextSwitchOverrides>
в разделе <runtime>
файла конфигурации приложения и установите для них значение false
. В следующем фрагменте кода показано, как принять усовершенствованные специальные возможности, представленные в .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>
Если вы решили включить функции специальных возможностей из более поздней версии .NET Framework, необходимо явным образом включить эти функции из более ранних версий платформы. Чтобы настроить приложение для улучшения специальных возможностей в платформа .NET Framework 4.7.1 и 4.7.2, добавьте следующий <AppContextSwitchOverrides>
элемент:
<runtime>
<!-- AppContextSwitchOverrides value attribute is in the form of key1=true|false;key2=true|false -->
<AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false" />
</runtime>
Для использования в приложении усовершенствованных специальных возможностей из .NET Framework 4.7.1, 4.7.2, 4.8 и августовского накопительного обновления 2020 г. для .NET Framework 4.8 добавьте следующий элемент <AppContextSwitchOverrides>
:
<runtime>
<!-- AppContextSwitchOverrides value attribute is in the form of key1=true|false;key2=true|false -->
<AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false;Switch.UseLegacyAccessibilityFeatures.3=false;Switch.UseLegacyAccessibilityFeatures.4=false"/>
</runtime>
Для приложений, ориентированных на версии .NET Framework, начиная с 4.7.1, можно отключить функции специальных возможностей, добавив следующий параметр в элемент <AppContextSwitchOverrides>
в разделе <runtime>
файла конфигурации приложения и установив значение true
. Например, следующая конфигурация задает отказ от функций специальных возможностей, представленных в .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>
платформа .NET Framework 4.8.1 включает новые функции специальных возможностей в следующих областях:
Добавлены и улучшены представления UIA
До платформа .NET Framework 4.8.1 Windows Forms не поддерживает ряд шаблонов UIA для поддержки вспомогательных технологий для взаимодействия с приложениями. Этот недостаток может привести к тому, что экранный диктор или другие средства чтения с экрана сообщают о неполной или неправильной информации. Это также может повлиять на важные функциональные возможности, такие как перемещение курсора через текст в элементе TextBox управления. С платформа .NET Framework 4.8.1 реализованы все необходимые шаблоны для общих элементов управления. Эта новая функциональность предоставляет пользователям вспомогательных технологий гораздо более широкий интерфейс взаимодействия с приложением.
Различные исправления ошибок для существующих функций специальных возможностей
DataGridviewCellStyle
базовой форме, имели Font
свойство, отличающееся DataGridView от DefaultFont
свойства.AccessibleName
Обновлено свойство внутренних полос прокрутки DataGridView элемента управления, чтобы удалить текст ScrollBar.DataGridViewLinkCell
ячейки.ControlType
было или LocalizedControlType
указано для пользовательских DataGridViewCell элементов.ToolStripRenderMode
значение System
.ToolStripComboBox
.Font
. Также убедитесь, что дерево обновляется правильно, когда запись затем свернута и больше не отображается.PropertyGrid category
элемента управления.ControlBox
кнопкам развернутой дочерней формы MDI.AccessibleName
DomainUpDown элемента управления имеет новое значение по умолчанию пустой строки. Пустая строка будет поощрять разработчиков создавать понятное имя, а не принимать предыдущее непустое значение по умолчанию.AccessibleName
Обновлено свойство кнопки "Печать" в PrintPreviewDialog элементе "Кнопка печати" на "Печать", чтобы избежать избыточности, когда средства чтения с экрана объявляют элемент управления и его тип.ComboBox
закрыта и больше не отображается.В этом выпуске WPF улучшил интерфейс, гарантируя, что подсказка в текущем окне можно легко закрыть с помощью клавиши ESC, клавиши CTRL (само по себе) или сочетания CTRL+SHIFT+F10. В этом выпуске область ключа ESC было сокращено, чтобы применить только к текущему окну, когда ранее он применялся к любой открытой подсказке в приложении. По умолчанию подсказки WPF будут соответствовать рекомендациям WCAG2.1, чтобы быть постоянными, закрываемыми и наведенными на указатель.
Накопительное обновление KB4569746 для платформы .NET Framework 4.8 от 11 августа 2020 г. содержит новые специальные возможности Windows Forms.
Устранены проблемы с объявлением элементов управления PropertyGrid
и развернутого или свернутого состояния категории средствами чтения с экрана.
Обновлены доступные шаблоны элемента управления PropertyGrid
и его внутренних элементов.
Обновлены доступные имена внутренних элементов управления PropertyGrid
для их правильного объявления средствами чтения с экрана.
Устранены доступные свойства ограничивающего прямоугольника для элементов управления PropertyGridView
.
Обеспечение правильного объявления средствами чтения с экрана развернутого или свернутого состояния ячеек поля со списком DataGridView
.
Платформа .NET Framework 4.8 включает новые функции специальных возможностей в следующих областях:
В .NET Framework 4.8 ко многим часто используемым элементам управления Windows Forms добавлена поддержка динамических областей и событий уведомлений. Кроме того, добавлена поддержка подсказок при переходе к элементам управления с помощью клавиатуры.
Поддержка динамических областей для элементов управления типа Label и StatusStrip в модели автоматизации пользовательского интерфейса Microsoft Windows
Динамические области в модели автоматизации пользовательского интерфейса Microsoft Windows позволяют разработчикам приложений уведомлять средства чтения с экрана об изменении текста в элементах управления, который находятся не там, где пользователь работает в настоящее время. Например, это полезно в случае с элементом управления StatusStrip, в котором отображается состояние подключения. Разработчику может быть необходимо уведомить средство чтения с экрана об изменении состояния, например утере подключения.
Начиная с .NET Framework 4.8 динамические области в модели автоматизации пользовательского интерфейса Microsoft Windows реализованы для элементов управления Windows Forms Label и StatusStrip. Например, в следующем коде динамическая область используется в элементе управления Label с именем label1
:
public Form1()
{
InitializeComponent();
label1.AutomationLiveSetting = AutomationLiveSetting.Polite;
}
…
Label1.Text = "Ready!";
Экранный диктор произносит "Готово" независимо от того, с каким элементом в приложении взаимодействует пользователь.
Вы также можете реализовать UserControl как динамическую область:
using System;
using System.Windows.Forms;
using System.Windows.Forms.Automation;
namespace WindowsFormsApplication
{
public partial class UserControl1 : UserControl, IAutomationLiveRegion
{
public UserControl1()
{
InitializeComponent();
}
public AutomationLiveSetting AutomationLiveSetting { get; set; }
private AutomationLiveSetting IAutomationLiveRegion.GetLiveSetting()
{
return this.AutomationLiveSetting;
}
protected override void OnTextChanged(EventArgs e)
{
base.OnTextChanged(e);
AutomationNotifications.UiaRaiseLiveRegionChangedEvent(this.AccessibilityObject);
}
}
}
События уведомлений в модели автоматизации пользовательского интерфейса Microsoft Windows
Событие уведомления модели автоматизации пользовательского интерфейса Microsoft Windows, появившееся в Windows 10 Fall Creators Update, позволяет приложению создавать событие модели автоматизации пользовательского интерфейса, вследствие которого экранный диктор произносит текст, предоставленный с событием, причем соответствующий элемент управления в пользовательском интерфейсе не требуется. В некоторых случаях это очень простой способ радикально улучшить доступность приложения. Он также может быть полезен для уведомления о ходе выполнения длительного процесса. Дополнительные сведения о событиях уведомлений в модели автоматизации пользовательского интерфейса Microsoft Windows см. в записи блога Can your desktop app leverage the new UI Notification event? (Может ли ваше классическое приложение использовать новое событие уведомления пользовательского интерфейса?).
В следующем примере создается событие уведомления:
MethodInfo raiseMethod = typeof(AccessibleObject).GetMethod("RaiseAutomationNotification");
if (raiseMethod != null) {
raiseMethod.Invoke(progressBar1.AccessibilityObject, new object[3] {/*Other*/ 4, /*All*/ 2, "The progress is 50%." });
}
Подсказки при доступе с клавиатуры
В приложениях для платформы .NET Framework 4.7.2 и более ранних версий подсказка элемента управления всплывает только при наведении на элемент указателя мыши. Начиная с .NET Framework 4.8 подсказка также может всплывать, когда пользователь переводит фокус на элемент управления с помощью клавиши TAB или клавиш со стрелками с клавишами-модификаторами или без них. Для данного улучшения специальных возможностей требуется дополнительный параметр 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>
На изображении ниже показана подсказка, появляющаяся, когда пользователь выбирает кнопку с помощью клавиатуры.
Начиная с .NET Framework 4.8 в WPF внесен ряд улучшений специальных возможностей.
Экранные дикторы больше не объявляют элементы с состоянием видимости Collapsed или Hidden
Свернутые или скрытые элементы больше не объявляются средством чтения с экрана. Если элементы, свойство Visibility которых имеет значение Visibility.Collapsed или Visibility.Hidden, объявляются средством чтения с экрана, пользователь может получать неправильное представление о пользовательском интерфейсе. Начиная с .NET Framework 4.8 в WPF свернутые или скрытые элементы больше не включаются в представление элементов управления дерева UIAutomation, поэтому средства чтения с экрана больше не могут объявлять их.
Свойство SelectionTextBrush для выделения текста без использования декоративного элемента
В .NET Framework 4.7.2 в WPF появилась возможность отрисовывать выделение текста в TextBox и PasswordBox без использования слоя декоративных элементов. В таком случае цвет переднего плана выделенного текста определялся свойством SystemColors.HighlightTextBrush.
В .NET Framework 4.8 добавлено новое свойство SelectionTextBrush
, которое позволяет разработчикам выбирать кисть для текста, выделенного без использования декоративного элемента. Это свойство работает только для элементов управления, производных от TextBoxBase, и элемента управления PasswordBox в приложениях WPF с включенным выделением текста без использования декоративного элемента. Оно не поддерживается элементом управления RichTextBox. Если выделение текста без использования декоративного элемента не включено, это свойство игнорируется.
Чтобы использовать это свойство, просто добавьте его в код XAML и примените соответствующую кисть или привязку. В итоге выделенный текст выглядит так:
Свойства SelectionBrush
и SelectionTextBrush
можно использовать вместе, чтобы получить любую требуемую комбинацию цветов фона и переднего плана.
Поддержка свойства ControllerFor в модели автоматизации пользовательского интерфейса Microsoft Windows
Свойство ControllerFor
в модели автоматизации пользовательского интерфейса Microsoft Windows возвращает массив элементов автоматизации, которые управляются элементом автоматизации, поддерживающим это свойство. Это свойство обычно используется для специальной возможности автозаполнения. Свойство ControllerFor
применяется, когда элемент автоматизации влияет на одну или несколько частей пользовательского интерфейса приложения или рабочего стола. В противном случае влияние работы элемента управления сложно связать с элементами пользовательского интерфейса. Эта возможность позволяет элементам управления предоставлять значение для свойства ControllerFor
.
В .NET Framework 4.8 появился новый виртуальный метод GetControlledPeersCore(). Чтобы предоставить значение для свойства ControllerFor
, просто переопределите этот метод так, чтобы он возвращал List<AutomationPeer>
для элементов управления, которыми управляет данный объект 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;
}
}
Подсказки при доступе с клавиатуры
В .NET Framework 4.7.2 и более ранних версиях подсказки отображались только при наведении указателя мыши на элемент управления. В .NET Framework 4.8 они также появляются при наведении фокуса с помощью клавиатуры, в том числе с помощью сочетаний клавиш.
Для использования этой возможности приложение должно быть предназначено для .NET Framework 4.8 или согласиться на ее использование с помощью параметров AppContextSwitch.UseLegacyAccessibilityFeatures.3
и Switch.UseLegacyToolTipDisplay
. Вот пример файла конфигурации приложения:
<?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>
После включения этой возможности подсказки будут появляться при наведении фокуса с помощью клавиатуры для всех элементов управления, имеющих подсказки. Подсказка может пропадать через некоторое время или при смене фокуса. Пользователи также могут вручную закрыть подсказку с помощью нового сочетания клавиш CTRL+SHIFT+F10. После закрытия подсказки его можно снова отобразить с помощью того же сочетания клавиш.
Примечание
Подсказки на ленте для элементов управления Ribbon не появляются при наведении фокуса с помощью клавиатуры. Они отображаются только при использовании сочетания клавиш.
Добавлена поддержка свойств SizeOfSet и PositionInSet в модели автоматизации пользовательского интерфейса Microsoft Windows
В Windows 10 появились два новых свойства модели автоматизации пользовательского интерфейса Microsoft Windows: SizeOfSet
и PositionInSet
. Они используются приложениями для указания количества элементов в наборе. Клиентские приложения модели автоматизации пользовательского интерфейса Microsoft Windows, такие как средства чтения с экрана, могут запрашивать эти свойства, чтобы точно представлять пользовательский интерфейс приложения.
Начиная с .NET Framework 4.8 приложения WPF предоставляют доступ к этим двум свойствам модели автоматизации пользовательского интерфейса Microsoft Windows. Это можно сделать двумя способами:
С помощью свойств зависимостей.
В WPF добавлены два новых свойства зависимостей: AutomationProperties.SizeOfSet и AutomationProperties.PositionInSet. Разработчик может задавать их значения с помощью XAML:
<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>
Путем переопределения виртуальных методов AutomationPeer.
GetPositionInSetCore() В GetSizeOfSetCore() класс были добавлены и виртуальные AutomationPeer
методы. Разработчик может указывать значения для SizeOfSet
и PositionInSet
, переопределяя эти методы, как показано в следующем примере:
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();
}
}
Кроме того, элементы в экземплярах ItemsControl предоставляют значения для этих свойств автоматически. Разработчику делать это не требуется. Если экземпляр ItemsControl сгруппирован, коллекция групп представлена как набор. Каждая группа считается отдельным набором, а каждый элемент в группе указывает свое положение в ней, а также размер группы. Виртуализация не влияет на автоматически задаваемые значения. Даже если элемент не реализован, он по-прежнему учитывается при определении общего размера набора и влияет на положение других элементов в наборе.
Значения предоставляются автоматически, только если приложение предназначено для .NET Framework 4.8. Если приложение предназначено для более ранних версий .NET Framework, можно задать параметр AppContextSwitch.UseLegacyAccessibilityFeatures.3
, как показано в следующем файле 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>
В конструктор рабочих процессов в .NET Framework 4.8 внесены указанные ниже изменения.
Улучшены метки case FlowSwitch при использовании экранного диктора.
Улучшены описания кнопок при использовании экранного диктора.
Пользователи, работающие с темами высокой контрастности, обратят внимание на улучшение видимости конструктора рабочих процессов и его элементов управления, в том числе повышение контрастности между элементами, а также более заметные поля выбора для элементов, находящихся в фокусе.
Если приложение предназначено для .NET Framework 4.7.2 или более ранней версии, эти улучшения можно активировать отдельно, установив параметр AppContextSwitch.UseLegacyAccessibilityFeatures.3
в значение false
в файле конфигурации приложения. Дополнительные сведения см. в разделе Использование преимуществ усовершенствованных специальных возможностей этой статьи.
Платформа .NET Framework 4.7.2 включает новые функции специальных возможностей в следующих областях:
Определенные в ОС цвета в темах высокой контрастности
Начиная с .NET Framework 4.7.2 Windows Forms использует цвета, определенные в операционной системе, в темах высокой контрастности. Это влияет на следующие элементы:
Стрелка раскрывающегося списка элемента управления ToolStripDropDownButton.
Элементы управления Button, RadioButton и CheckBox, у которых для параметра FlatStyle установлено значение FlatStyle.Flat или FlatStyle.Popup. Ранее выбранные цвета текста и фона не были контрастными и текст было сложно читать.
Элементы управления, содержащиеся в GroupBox, у которого для свойства Enabled установлено значение false
.
Элементы управления ToolStripButton, ToolStripComboBox и ToolStripDropDownButton, которые имеют повышенное значение контрастности яркости в режиме высокой контрастности.
Свойство LinkColor класса DataGridViewLinkCell.
Усовершенствования экранного диктора
Начиная с .NET Framework 4.7.2 усовершенствована поддержка экранного диктора:
Он сообщает значение свойства ToolStripMenuItem.ShortcutKeys при объявлении текста ToolStripMenuItem.
Он указывает, когда для свойства Enabled элемента ToolStripMenuItem задано значение false
.
Он предоставляет отзыв о состоянии флажка, если для свойства ListView.CheckBoxes задано значение true
.
Порядок фокуса экранного диктора в режиме сканирования согласуется с визуальным порядком элементов управления в диалоговом окне загрузки ClickOnce.
Усовершенствования DataGridView
Начиная с .NET Framework 4.7.2 элемент управления DataGridView вносит следующие улучшения специальных возможностей:
Строки можно сортировать с помощью клавиатуры. Пользователь может использовать ключ F3 для сортировки по текущему столбцу.
Ширина столбца текущей ячейки может быть увеличена или уменьшена с помощью клавиш ALT ВЛЕВО или СТРЕЛКА ВПРАВО + .
Когда DataGridView.SelectionMode имеет значение DataGridViewSelectionMode.FullRowSelect, заголовок столбца меняет цвет для указания на текущий столбец, когда пользователь переходит по ячейкам в текущей строке.
Свойство AccessibleObject.Parent объекта System.Windows.Forms.DataGridViewLinkCell.DataGridViewLinkCellAccessibleObject возвращает правильный родительский элемент управления.
Улучшенные визуальные подсказки
Улучшенная поддержка сетки свойств
Дочерние PropertyGrid элементы элемента элемента управления теперь возвращают true
свойство IsReadOnlyProperty только в том случае, если включен элемент PropertyGrid.
Дочерние элементы элемента управления PropertyGrid возвращают false
для свойства IsEnabledProperty только в том случае, если элемент PropertyGrid может быть изменен пользователем.
Улучшение навигации с помощью клавиатуры
true
Изменения элементов управления CheckBox и RadioButton
В .NET Framework 4.7.1 и более ранних версий элементы управления System.Windows.Controls.CheckBox и System.Windows.Controls.RadioButton WPF имеют несогласованные и (в классической теме и теме высокой контрастности) неправильные визуальные элементы фокуса. Это происходит в случаях, когда для элементов управления не задано какое-либо содержимое. Это может затруднять переход между темами и отображение визуального элемента фокуса.
В .NET Framework 4.7.2 эти визуальные элементы стали более согласованными в разных темах и более видимыми в классической и контрастной темах.
Элементы управления WinForms, размещенные в приложении WPF
При использовании элемента управления WinForms, размещенного в приложении WPF в .NET Framework 4.7.1 и более ранних версий, пользователи не могли выйти из слоя WinForms с помощью клавиши табуляции, если первый или последний элемент управления в слое был элементом управления ElementHost WPF. В .NET Framework 4.7.2 пользователи теперь могут выйти из слоя WinForms с помощью клавиши табуляции.
Однако автоматизированные приложения, которые зависят от постоянного нахождения фокуса в слое WinForms, могут работать некорректно.
Платформа .NET Framework 4.7.1 включает новые функции специальных возможностей в следующих областях:
Улучшения средств чтения с экрана
Если включены улучшения специальных возможностей, .NET Framework 4.7.1 содержит следующие усовершенствования, касающиеся средств чтения с экрана:
В .NET Framework 4.7 и более ранних версий элементы управления Expander объявлялись средствами чтения с экрана как кнопки. Начиная с .NET Framework 4.7.1 они правильно объявляются как развертываемые и свертываемые группы.
В .NET Framework 4.7 и более ранних версий элементы управления DataGridCell объявлялись средствами чтения с экрана как пользовательские. Начиная с .NET Framework 4.7.1 они правильно объявляются как ячейка сетки данных (локализованная).
Начиная с .NET Framework 4.7.1 средства чтения с экрана объявляют имя изменяемого ComboBox.
В .NET Framework 4.7 и более ранних версий элементы управления PasswordBox объявлялись как "в представлении нет элементов" или имели иное неправильное поведение. Начиная с .NET Framework 4.7.1 эта проблема устранена.
Поддержка динамических областей автоматизации пользовательского интерфейса
Средства чтения с экрана, такие как экранный диктор, помогают людям читать содержимое пользовательского интерфейса приложения. Обычно для этого используется преобразование текста в речь для содержимого, находящегося в фокусе. Однако если элемент пользовательского интерфейса изменяется и находится не в фокусе, пользователь может не получить уведомление и пропустить важные сведения. Динамические области призваны решить эту проблему. Разработчик может использовать их для информирования средства чтения с экрана или любого другого клиента автоматизации пользовательского интерфейса о важных изменениях элемента пользовательского интерфейса. После этого средство чтения с экрана может решить, уведомлять ли пользователя об этом изменении.
Для поддержки динамических областей в WPF добавлены следующие API:
Поля AutomationElementIdentifiers.LiveSettingProperty и AutomationElementIdentifiers.LiveRegionChangedEvent, которые идентифицируют свойство LiveSetting и событие LiveRegionChanged. Их можно задать с помощью XAML.
Присоединенное свойство AutomationProperties.LiveSetting, уведомляющее средство чтения с экрана о том, насколько важно изменение пользовательского интерфейса для пользователя.
СвойствоAutomationProperties.LiveSettingProperty, которое идентифицирует присоединенное свойство AutomationProperties.LiveSetting.
Метод AutomationPeer.GetLiveSettingCore, который можно переопределить для предоставления значения LiveSetting.
Методы AutomationProperties.GetLiveSetting и AutomationProperties.SetLiveSetting, которые возвращают и задают значение LiveSetting.
Перечисление System.Windows.Automation.AutomationLiveSetting, которое определяет следующие возможные значения LiveSetting:
AutomationLiveSetting.Off. Элемент не отправляет уведомления при изменении содержимого динамической области.
AutomationLiveSetting.Polite. Элемент отправляет уведомления, не прерывающие работу, при изменении содержимого динамической области.
AutomationLiveSetting.Assertive. Элемент отправляет уведомления, прерывающие работу, при изменении содержимого динамической области.
Вы можете создать динамическую область, задав свойство AutomationProperties.LiveSetting для нужного элемента, как показано в следующем примере:
<TextBlock Name="myTextBlock" AutomationProperties.LiveSetting="Assertive">announcement</TextBlock>
Когда данные в динамической области изменяются и вам нужно проинформировать средство чтения с экрана, можно явно вызвать событие, как показано в следующем примере.
var peer = FrameworkElementAutomationPeer.FromElement(myTextBlock);
peer.RaiseAutomationEvent(AutomationEvents.LiveRegionChanged);
Dim peer = FrameworkElementAutomationPeer.FromElement(myTextBlock)
peer.RaiseAutomationEvent(AutomationEvents.LiveRegionChanged)
Высокая контрастность
Начиная с .NET Framework 4.7.1 внесены улучшения в функции высокой контрастности для различных элементов управления WPF. Теперь они видны, когда задана тема HighContrast. Например:
Элемент управления Expander
Теперь визуальный элемент фокуса Expander элемента управления отображается. Визуальные элементы клавиатуры для элементов управления ComboBox, ListBox и RadioButton также видимы. Например:
До:
После:
Элементы управления CheckBox и RadioButton
Текст в элементах управления CheckBox и RadioButton теперь стало проще читать, когда он выбран при использовании тем с высокой контрастностью. Например:
До:
После:
Элемент управления ComboBox
Начиная с .NET Framework 4.7.1 граница отключенного элемента управления ComboBox имеет цвет отключенного текста. Например:
До:
После:
Кроме того, отключенные и находящиеся в фокусе кнопки используют правильный цвет темы.
До:
После:
Наконец, в .NET Framework 4.7 и более ранних версий установка стиля элемента управления ComboBox в значение Toolbar.ComboBoxStyleKey
приводила к тому, что стрелка раскрывающегося списка была невидимой. Начиная с .NET Framework 4.7.1 эта проблема устранена. Например:
До:
После:
Элемент управления DataGrid
Начиная с .NET Framework 4.7.1 стрелка индикатора сортировки в элементе управления DataGrid имеет правильные цвета темы. Например:
До:
После:
Кроме того, в .NET Framework 4.7 и более ранних версий стиль ссылки по умолчанию изменялся на неправильный цвет при наведении указателя мыши в режимах высокой контрастности. Начиная с .NET Framework 4.7.1 эта проблема устранена. DataGrid Аналогичным образом столбцы проверка box используют ожидаемые цвета для обратной связи с фокусом клавиатуры, начиная с платформа .NET Framework 4.7.1.
До:
После:
Дополнительные сведения об улучшениях специальных возможностей WPF в .NET Framework 4.7.1 см. в разделе Улучшения специальных возможностей в WPF.
В модель Windows Forms (WinForms) платформы .NET Framework 4.7.1 были внесены изменения специальных возможностей в следующих областях:
Улучшенное отображение в режиме высокой контрастности
Начиная с .NET Framework 4.7.1 различные элементы управления WinForms обеспечивают улучшенную отрисовку в режимах высокой контрастности, доступных в операционной системе. В Windows 10 были изменены некоторые системные цвета в режиме высокой контрастности, а Windows Forms основан на платформе Win32 Windows 10. Для лучшего использования запустите последнюю версию Windows и включите последние изменения ОС, добавив файл app.manifest в тестовое приложение и раскомментируйте поддерживаемую строку ОС Windows 10, чтобы она выглядела следующим образом:
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
Некоторые примеры изменения режима высокой контрастности:
Лучше читаются флажки в элементах MenuStrip.
Лучше читаются выбранные отключенные элементы MenuStrip.
Текст в выбранном Button элементе управления отличается от цвета выбора.
Отключенный текст проще читать. Например:
До:
После:
Усовершенствования режима высокой контрастности в диалоговом окне исключения потока.
Улучшенная поддержка экранного диктора
Модель Windows Forms в .NET Framework 4.7.1 содержит следующие улучшения специальных возможностей для экранного диктора:
К элементу управления MonthCalendar может обратиться как экранный диктор, так и любое другое средство автоматизации пользовательского интерфейса.
Элемент управления CheckedListBox оповещает экранный диктор об изменении состояния флажка элемента, чтобы пользователь узнал, что значение элемента списка изменилось.
Элемент управления DataGridViewCell сообщает правильное состояние доступа только для чтения экранному диктору.
Теперь экранный диктор может прочитать отключенный текст ToolStripMenuItem, хотя раньше он пропускал отключенные пункты меню.
Улучшенная поддержка шаблонов специальных возможностей автоматизации пользовательского интерфейса
Начиная с .NET Framework 4.7.1 разработчики средств специальных возможностей могут использовать стандартные шаблоны специальных возможностей API и свойства для нескольких элементов управления WinForms. Некоторые из этих улучшений специальных возможностей:
ComboBox и ToolStripSplitButton теперь поддерживают шаблон развертывания/свертывания.
DataGridViewCheckBoxCell теперь поддерживает шаблон переключения.
Элемент управления ToolStripItem поддерживает свойство Name и шаблон развертывания/свертывания.
Элементы управления NumericUpDown и DomainUpDown поддерживают свойство Name.
Улучшенное взаимодействие с обозревателем свойств
Начиная с .NET Framework 4.7.1 модель Windows Forms включает в себя следующее:
Начиная с .NET Framework 4.7.1 и Visual Studio 2017 версии 15.3 в ASP.NET улучшена работа веб-элементов управления ASP.NET с технологией специальных возможностей в Visual Studio. Внесены следующие изменения:
Изменения для реализации отсутствующих шаблонов специальных возможностей пользовательского интерфейса в элементах управления, например в диалоговом окне Добавить поле в мастере представления сведений или в диалоговом окне Настройка ListView в мастере ListView.
Изменения для улучшенного отображения в режиме высокой контрастности, например в редакторе полей страничного навигатора данных.
Изменения для улучшения навигации с помощью клавиатуры для таких элементов, как диалоговое окно Поля в мастере полей страничного навигатора, диалоговое окно Настроить ObjectContext или Настроить выбор данных в мастере настройки источника данных.
В редакторе конфигурации (SvcConfigEditor.exe) и средстве Service Trace Viewer (SvcTraceViewer.exe) были устранены различные ошибки специальных возможностей. В основном это были незначительные проблемы, например не определялось имя или некорректно реализовывались шаблоны автоматизации пользовательского интерфейса. Многие пользователи могли не замечать неверные значения, но пользователям, использующим вспомогательные технологии, такие как средства чтения с экрана, будет проще использовать эти средства пакета SDK.
Эти усовершенствования меняют предыдущее поведение, например порядок фокуса клавиатуры.
Ниже перечислены изменения специальных возможностей в конструкторе рабочих процессов:
Для некоторых элементов управления изменена последовательность табуляции при переходе слева направо и сверху вниз:
Окно инициализации корреляции для установки данных корреляции для действия InitializeCorrelation.
Окно определения содержания для действий Receive, Send, SendReply и ReceiveReply.
Большее число функций доступно с клавиатуры:
При редактировании свойств действия группы свойств можно сворачивать с помощью клавиатуры в том случае, если они впервые получают фокус.
Значки предупреждений теперь доступны с клавиатуры.
Кнопка Дополнительные свойства в окне Свойства теперь доступна с клавиатуры.
Пользователи могут с помощью клавиатуры получать доступ к элементам заголовка в областях Аргументы и Переменные в конструкторе рабочих процессов.
Улучшена видимость находящихся в фокусе элементов, например в следующих случаях:
Добавление строк в сетки данных, используемые конструктором рабочих процессов и конструкторами действий.
Переход по клавише TAB между полями в действиях ReceiveReply и SendReply.
Установка значений по умолчанию для переменных или аргументов
Средства чтения с экрана теперь правильно распознают следующие объекты:
Точки останова, установленные в конструкторе рабочих процессов.
Действия FlowSwitch<T>, FlowDecision и CorrelationScope.
Содержимое действия Receive.
Целевой тип действия InvokeMethod.
Поле со списком "Исключение" и раздел Finally действия TryCatch.
Поле со списком "Тип сообщений", разделитель в окне "Добавить инициализаторы корреляции", окно "Определение содержимого", а также окно "Определение корреляции" в действиях сообщений (Receive, Send, SendReply и ReceiveReply).
Переходы и назначения переходов конечного автомата.
Заметки и соединители для действий FlowDecision.
Контекстные меню действий, вызываемые при щелчке правой кнопкой мыши.
Редакторы значений свойств, кнопка "Очистить условия поиска", кнопки сортировки "По категории" и "По алфавиту", а также диалоговое окно "Редактор выражений" в сетке свойств.
Величина масштаба в конструкторе рабочих процессов.
Действие InvokeDelegate.
Окно "Выбор типов" для действий словаря (Microsoft.Activities.AddToDictionary<TKey,TValue>
, Microsoft.Activities.RemoveFromDictionary<TKey,TValue>
и т. д.).
Окно поиска и выбора типа .NET.
Элемент иерархической навигации в конструкторе рабочих процессов.
Пользователи, работающие с темами высокой контрастности, обратят внимание на улучшение видимости многих частей конструктора рабочих процессов и его элементов управления, в том числе повышение контрастности между элементами, а также более заметные поля выбора для элементов, находящихся в фокусе.
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Обучение
Модуль
Создание веб-приложений со специальными возможностями с помощью ASP.NET Core - Training
Диагностика и устранение распространенных проблем со специальными возможностями в веб-приложении ASP.NET Core.