Общие сведения о специальных возможностяхAccessibility overview

В этой статье представлен обзор концепций и технологий, связанных со сценариями специальных возможностей для приложений Windows.This article is an overview of the concepts and technologies related to accessibility scenarios for Windows apps.

Специальные возможности и ваше приложениеAccessibility and your app

Пользователи могут иметь ограничения или нарушения, связанные с двигательными способностями, зрением, цветовым восприятием, слухом, речью, способностью восприятия информации и грамотностью.There are many possible disabilities or impairments, including limitations in mobility, vision, color perception, hearing, speech, cognition, and literacy. Ниже показано, как выполнить большую часть этих требований.However, you can address most requirements by following the guidelines offered here. К ним относятся:This means providing:

  • Поддержка управления с клавиатуры и программ для чтения с экрана.Support for keyboard interactions and screen readers.
  • Поддержка пользовательских настроек, таких как шрифт, масштаб (увеличение), цвет и параметры высокой контрастности.Support for user customization, such as font, zoom setting (magnification), color, and high-contrast settings.
  • Альтернативы или дополнения для элементов интерфейса.Alternatives or supplements for parts of your UI.

Элементы управления для XAML обеспечивают встроенную поддержку клавиатуры и специальных возможностей, таких как средства чтения с экрана, которые используют платформы с поддержкой приложений UWP, HTML и других технологий пользовательских интерфейсов.Controls for XAML provide built-in keyboard support and support for assistive technologies such as screen readers, which take advantage of accessibility frameworks that already support UWP apps, HTML, and other UI technologies. Встроенная поддержка обеспечивает базовый уровень специальных возможностей, которые вы можете легко настроить, установив нужные свойства.This built-in support enables a basic level of accessibility that you can customize with very little work, by setting just a handful of properties. Если вы создаете собственные компоненты и элементы управления XAML, можно также добавить аналогичную поддержку для этих элементов управления с помощью концепции однорангового элемента автоматизации.If you are creating your own custom XAML components and controls, you can also add similar support to those controls by using the concept of an automation peer.

Кроме того, функции привязки данных, стиля и шаблонов облегчают реализацию поддержки динамических изменений для параметров отображения и текста альтернативных элементов интерфейса.In addition, data binding, style, and template features make it easy to implement support for dynamic changes to display settings and text for alternative UIs.

Автоматизация пользовательского интерфейсаUI Automation

Поддержка специальных возможностей обеспечивается главным образом за счет встроенной поддержки инфраструктуры автоматизации пользовательского интерфейса Майкрософт.Accessibility support comes primarily from the integrated support for the Microsoft UI Automation framework. Эта поддержка обеспечивается базовыми классами и встроенным поведением реализации класса для типов элементов управления, а также представлением интерфейса для API поставщика модели автоматизации пользовательского интерфейса.That support is provided through base classes and the built-in behavior of the class implementation for control types, and an interface representation of the UI Automation provider API. Каждый класс элементов управления использует концепции моделей автоматизации пользовательского интерфейса кэширующих узлов и шаблонов автоматизации, сообщающие о роли и содержимом элемента управления клиентам автоматизации пользовательского интерфейса.Each control class uses the UI Automation concepts of automation peers and automation patterns that report the control's role and content to UI Automation clients. Модель автоматизации пользовательского интерфейса воспринимает приложение как окно верхнего уровня, а инфраструктура автоматизации пользовательского интерфейса предоставляет клиенту автоматизации пользовательского интерфейса все содержимое окна приложения, связанное со специальными возможностями.The app is treated as a top-level window by UI Automation, and through the UI Automation framework all the accessibility-relevant content within that app window is available to a UI Automation client. Дополнительные сведения о модели автоматизации пользовательского интерфейса см. в разделе Общие сведения о модели автоматизации пользовательского интерфейса.For more info about UI Automation, see UI Automation Overview.

Специальные возможностиAssistive technology

Многие потребности в специальных возможностях реализуются с помощью установки соответствующих продуктов или через инструменты и параметры, предоставляемые операционной системой.Many user accessibility needs are met by assistive technology products installed by the user or by tools and settings provided by the operating system. Сюда входят такие функциональные возможности, как программы для чтения с экрана, экранная лупа и параметры высокой контрастности.This includes functionality such as screen readers, screen magnification, and high-contrast settings.

Специальные возможности реализованы в широком спектре программных средств и оборудования.Assistive technology products include a wide variety of software and hardware. Эти продукты управляются с помощью стандартной клавиатуры и платформ специальных возможностей, которые сообщают программам для чтения с экрана и другим вспомогательным приложениям информацию о содержимом и структуре интерфейса.These products work through the standard keyboard interface and accessibility frameworks that report information about the content and structure of a UI to screen readers and other assistive technologies. Примеры продуктов, реализующих специальные возможности:Examples of assistive technology products include:

  • Экранная клавиатура, которая позволяет использовать для ввода текста указатель вместо клавиатуры.The On-Screen Keyboard, which enables people to use a pointer in place of a keyboard to type text.
  • Программное обеспечение для распознавания голоса, которое преобразует произнесенные слова в печатный текст.Voice-recognition software, which converts spoken words into typed text.
  • Программы для чтения с экрана, которые преобразуют текст в речь или другие формы коммуникации, такие как шрифт Брайля.Screen readers, which convert text into spoken words or other forms such as Braille.
  • Средство чтения с экрана "Экранный диктор" — специальный компонент Windows.The Narrator screen reader, which is specifically part of Windows. Экранный диктор поддерживает сенсорный режим, позволяющий выполнять задачи чтения с экрана путем обработки сенсорных жестов в случаях, когда клавиатура недоступна.Narrator has a touch mode, which can perform screen reading tasks by processing touch gestures, for when there is no keyboard available.
  • Программы или параметры, позволяющие регулировать параметры дисплея или его областей, например высококонтрастные темы, параметры разрешения экрана (количество точек на дюйм) или экранная лупа.Programs or settings that adjust the display or areas of it, for example high contrast themes, dots per inch (dpi) settings of the display, or the Magnifier tool.

Приложения, в которых грамотно реализована поддержка клавиатуры и средства чтения с экрана, обычно хорошо работают и с другими специальными возможностями.Apps that have good keyboard and screen reader support usually work well with various assistive technology products. Чаще всего приложение UWP не требует изменений информации или структуры для работы с этими продуктами.In many cases, a UWP app works with these products without additional modification of information or structure. Однако вы можете изменить некоторые параметры, чтобы улучшить специальные возможности или реализовать поддержку дополнительных функций.However, you may want to modify some settings for optimal accessibility experience or to implement additional support.

Некоторые из этих параметров можно использовать для проверки основных сценариев специальных возможностей, перечисленных в разделе Проверка специальных возможностей.Some of the options that you can use for testing basic accessibility scenarios with assistive technologies are listed in Accessibility testing.

Поддержка чтения с экрана и основные сведения о специальных возможностяхScreen reader support and basic accessibility information

Средства чтения с экрана обеспечивают доступ к содержащемуся в приложении тексту, преобразуя его в другой формат, например в речь или шрифт Брайля.Screen readers provide access to the text in an app by rendering it in some other format, such as spoken language or Braille output. Точное поведение средства чтения с экрана зависит от программного обеспечения и пользовательских настроек.The exact behavior of a screen reader depends on the software and on the user's configuration of it.

Например, некоторые средства чтения с экрана озвучивают все элементы интерфейса при запуске или активации приложения, что позволяет пользователю получить все доступное информационное содержимое перед использованием навигации приложения.For example, some screen readers read the entire app UI when the user starts or switches to the app being viewed, which enables the user to receive all of the available informational content before attempting to navigate it. Некоторые средства чтения с экрана также считывают текст, связанный с отдельным элементом управления, при получении фокуса во время перехода клавишей TAB.Some screen readers also read the text associated with an individual control when it receives focus during tab navigation. Это позволяет пользователю самостоятельно ориентироваться при перемещении между элементами управления для ввода.This enables users to orient themselves as they navigate among the input controls of an application. Экранный диктор — пример средства чтения с экрана, которое реализует обе модели поведения в зависимости от выбора пользователя.Narrator is an example of a screen reader that provides both behaviors, depending on user choice.

Самой важной информацией, которая требуется средству чтения с экрана и аналогичным средствам для того, чтобы предоставлять пользователю необходимую информацию о приложении и навигации в нем, является имя специальной возможности для составных частей приложения.The most important information that a screen reader or any other assistive technology needs in order to help users understand or navigate an app is an accessible name for the element parts of the app. Во многих случаях элемент управления или другой элемент уже имеет специальное имя, вычисленное на основе других заданных вами свойств.In many cases, a control or element already has an accessible name that is calculated from other property values that you have otherwise provided. Наиболее распространенный случай, в котором можно использовать уже рассчитанное имя, — это элемент, который поддерживает и отображает внутренний текст.The most common case in which you can use an already-calculated name is with an element that supports and displays inner text. Для остальных элементов иногда необходимо учитывать другие способы получения имени специальных возможностей согласно рекомендациям для структуры элемента.For other elements, you sometimes need to account for other ways to provide an accessible name by following best practices for element structure. В некоторых случаях необходимо предоставить имя, которое явным образом будет использоваться для специальных возможностей в приложении.And sometimes you need to provide a name that is explicitly intended as the accessible name for app accessibility. Пример кода, показывающий, сколько вычисленных значений может работать в обычных элементах пользовательского интерфейса, а также дополнительная информация о специальных именах приведены в разделе Основные сведения о специальных возможностях.For a listing of how many of these calculated values work in common UI elements, and for more info about accessible names in general, see Basic accessibility information.

Существует несколько других свойств автоматизации (включая свойства клавиатуры, описанные в следующем разделе).There are several other automation properties available (including the keyboard properties described in the next section). Однако некоторые средства чтения с экрана поддерживают не все свойства автоматизации.However, not all screen readers support all automation properties. В целом необходимо задать все подходящие свойства автоматизации и выполнить проверку, чтобы обеспечить наилучшую поддержку средств чтения с экрана.In general, you should set all appropriate automation properties and test to provide the widest possible support for screen readers.

Поддержка клавиатурыKeyboard support

Чтобы обеспечить качественную поддержку клавиатуры, убедитесь, что с любой частью вашего приложения можно работать с помощью клавиатуры.To provide good keyboard support, you must ensure that every part of your application can be used with a keyboard. Если ваше приложение в основном использует стандартные элементы управления и не содержит пользовательских элементов управления, то большая часть работы уже сделана.If your app uses mostly the standard controls and doesn't use any custom controls, you are most of the way there already. В базовую модель элемента управления XAML встроена поддержка клавиатуры, которая включает в себя навигацию по вкладкам, ввод текста и специальную поддержку отдельных элементов управления.The basic XAML control model provides built-in keyboard support including tab navigation, text input, and control-specific support. Элементы, которые являются контейнерами макета (например, панели), создают последовательность табуляции по умолчанию на основе последовательности макета.The elements that serve as layout containers (such as panels) use the layout order to establish a default tab order. Эта последовательность табуляции часто применяется для представления интерфейса средствами специальных возможностей.That order is often the correct tab order to use for an accessible representation of the UI. Если для отображения данных используются элементы управления Список и Сетка, то навигация с помощью клавиш со стрелками поддерживается по умолчанию.If you use ListBox and GridView controls to display data, they provide built-in arrow-key navigation. Если используется элемент управления Кнопкадля активации кнопки можно воспользоваться клавишей "Пробел" или "Ввод".Or if you use a Button control, it already handles the Spacebar or Enter keys for button activation.

Дополнительную информацию обо всех аспектах поддержки клавиатуры, включая последовательность табуляции по вкладкам, а также активацию и навигацию с помощью клавиатуры, см. в статье Специальные возможности клавиатуры.For more info about all the aspects of keyboard support, including tab order and key-based activation or navigation, see Keyboard accessibility.

Мультимедиа и подписиMedia and captioning

Аудиовизуальные мультимедиа обычно отображаются посредством объекта MediaElement.You typically display audiovisual media through a MediaElement object. Можно использовать API MediaElement для управления воспроизведением мультимедиа.You can use MediaElement APIs to control the media playback. Для поддержки специальных возможностей можно при необходимости добавить элементы управления для воспроизведения, приостановки и остановки файла мультимедиа.For accessibility purposes, provide controls that enable users to play, pause, and stop the media as needed. Мультимедийное содержание иногда включает в себя дополнительные компоненты для специальных возможностей, например субтитры или альтернативные звуковые дорожки со словесными описаниями.Sometimes, media includes additional components that are intended for accessibility, such as captioning or alternative audio tracks that include narrative descriptions.

Текст для специальных возможностейAccessible text

Для специальных возможностей важны три основных свойства текста:Three main aspects of text are relevant to accessibility:

  • Инструменты должны определять способ прочтения текста — по мере перемещения табуляции или только при первом открытии документа.Tools must determine whether the text is to be read as part of a tab-sequence traversal or only as part of an overall document representation. Вы можете регулировать выбор, указав соответствующий элемент для отображения текста или изменяя свойства этих текстовых элементов.You can help control this determination by choosing the appropriate element for displaying the text or by adjusting properties of those text elements. Каждый текстовый элемент имеет определенное назначение, которое обычно связано с соответствующей ролью модели автоматизации пользовательского интерфейса.Each text element has a specific purpose, and that purpose often has a corresponding UI Automation role. Использование неподходящего элемента может привести к отправке неверного уведомления о роли в модель автоматизации пользовательского интерфейса и создать сложности для пользователей с ограниченными возможностями.Using the wrong element can result in reporting the wrong role to UI Automation and creating a confusing experience for an assistive technology user.
  • Многие пользователи с ослабленным зрением способны читать только тот текст, который резко выделяется по сравнению с фоном.Many users have sight limitations that make it difficult for them to read text unless it has adequate contrast against the background. Это не всегда очевидно для разработчиков приложений.How this impacts the user is not intuitive for app designers who do not have that sight limitation. Например, люди, плохо различающие цвета, не смогут прочитать текст, отображающийся слишком бледным цветом.For example, for color-blind users, poor color choices in the design can prevent some users from being able to read the text. Рекомендации по специальным возможностям, которые первоначально были созданы для содержимого веб-страниц, определяют стандарты для контраста, которые подходят и для приложений.Accessibility recommendations that were originally made for web content define standards for contrast that can avoid these problems in apps as well. Подробнее см. в разделе Требования специальных возможностей для текста.For more info, see Accessible text requirements.
  • Некоторым пользователям трудно читать текст, набранный слишком мелким шрифтом.Many users have difficulty reading text that is simply too small. Эту проблему можно решить простым увеличением размера шрифта в элементах пользовательского интерфейса.You can prevent this issue by making the text in your app's UI reasonably large in the first place. Однако такой вариант затруднителен для приложений, содержащих много текста, или таких приложений, где текст перемежается с другими элементами интерфейса.However, that's challenging for apps that display large quantities of text, or text interspersed with other visual elements. В этом случае убедитесь, что приложение правильно взаимодействует с системными компонентами, которые можно масштабировать на экране так, чтобы вместе с ними масштабировался текст в приложениях.In such cases, make sure that the app correctly interacts with the system features that can scale up the display, so that any text in apps scales up along with it. (Некоторые пользователи изменяют значения количества точек на дюйм, прибегая к нему как к параметру специальных возможностей.(Some users change dpi values as an accessibility option. Этот параметр доступен в разделе Увеличение изображений на экране страницы Специальные возможности, который перенаправляет вас в пользовательский интерфейс панели управления в раздел Оформление и персонализация / Экран.)That option is available from Make things on the screen larger in Ease of Access, which redirects to a Control Panel UI for Appearance and Personalization / Display.)

Поддержка тем с высокой контрастностьюSupporting high-contrast themes

Элементы управления пользовательского интерфейса используют визуальное представление, которое определяется как часть словаря ресурсов XAML для тем.UI controls use a visual representation that is defined as part of a XAML resource dictionary of themes. Одна или несколько из этих тем специально используются, когда система настроена на высокую контрастность.One or more of these themes is specifically used when the system is set for high contrast. Когда пользователь переключается на высокую контрастность, динамически просматривая соответствующую тему в словаре ресурсов, все элементы управления пользовательского интерфейса также будут использовать соответствующую тему высокой контрастности.When the user switches to high contrast, by looking up the appropriate theme from a resource dictionary dynamically, all your UI controls will use an appropriate high-contrast theme too. Просто убедитесь, что вы не отключили эти темы, указав стиль напрямую или воспользовавшись другим вариантом оформления, в котором высококонтрастные темы не смогут перекрыть ваши настройки оформления.Just make sure that you haven't disabled the themes by specifying an explicit style or using another styling technique that prevents the high-contrast themes from loading and overriding your style changes. Дополнительную информацию см. в разделе Темы с высокой контрастностью.For more info, see High-contrast themes.

Проектирование альтернативного интерфейсаDesign for alternative UI

При проектировании приложений нужно учитывать потребности людей с нарушениями зрения, слуха и опорно-двигательного аппарата.When you design your apps, consider how they may be used by people with limited mobility, vision, and hearing. Поскольку специальные возможности широко используются в стандартных пользовательских интерфейсах, то даже в случае, если вы не планируете вносить другие изменения в специальные возможности, очень важно реализовать поддержку удобной виртуальной клавиатуры и средств чтения с экрана.Because assistive technology products make extensive use of standard UI, it is particularly important to provide good keyboard and screen-reader support even if you make no other adjustments for accessibility.

Во многих случаях можно передать важную информацию и расширить аудиторию с помощью нескольких способов.In many cases, you can convey essential information by using multiple techniques to widen your audience. Например, для выделения элементов можно использовать значки в сочетании с информацией о цвете, чтобы помочь пользователям с нарушением цветового восприятия, а также применять графические уведомления вместе со звуковыми, чтобы помочь людям с ослабленным слухом.For example, you can highlight information using both icon and color information to help users who are color blind, and you can display visual alerts along with sound effects to help users who are hearing impaired.

При необходимости можно обеспечить альтернативные элементы пользовательского интерфейса, которые полностью удаляют несущественные элементы и анимацию, чтобы упростить взаимодействие с пользователем.If necessary, you can provide alternative, accessible user interface elements that completely remove nonessential elements and animations, and provide other simplifications to streamline the user experience. В следующем примере кода показано, как отображать один экземпляр UserControl вместо другого в зависимости от параметров пользователя.The following code example demonstrates how to display one UserControl instance in place of another depending on a user setting.

XAMLXAML

<StackPanel x:Name="LayoutRoot" Background="White">

  <CheckBox x:Name="ShowAccessibleUICheckBox" Click="ShowAccessibleUICheckBox_Click">
    Show Accessible UI
  </CheckBox>

  <UserControl x:Name="ContentBlock">
    <local:ContentPage/>
  </UserControl>

</StackPanel>

Visual BasicVisual Basic

Private Sub ShowAccessibleUICheckBox_Click(ByVal sender As Object,
    ByVal e As RoutedEventArgs)

    If (ShowAccessibleUICheckBox.IsChecked.Value) Then
        ContentBlock.Content = New AccessibleContentPage()
    Else
        ContentBlock.Content = New ContentPage()
    End If
End Sub

C#C#

private void ShowAccessibleUICheckBox_Click(object sender, RoutedEventArgs e)
{
    if ((sender as CheckBox).IsChecked.Value)
    {
        ContentBlock.Content = new AccessibleContentPage();
    }
    else
    {
        ContentBlock.Content = new ContentPage();
    }
}

Проверка и публикацияVerification and publishing

Подробные сведения о декларациях специальных возможностей и публикации приложения см. в разделе Специальные возможности в Магазине.For more info about accessibility declarations and publishing your app, see Accessibility in the Store.

Примечание

Объявление приложения как приложения со специальными возможностями используется только в Microsoft Store.Declaring the app as accessible is only relevant to the Microsoft Store.

Поддержка специальных возможностей в пользовательских элементах управленияAssistive technology support in custom controls

При создании пользовательского элемента управления мы рекомендуем вам также реализовать или расширить один или несколько подклассов AutomationPeer для обеспечения поддержки специальных возможностей.When you create a custom control, we recommend that you also implement or extend one or more AutomationPeer subclasses to provide accessibility support. В некоторых случаях при использовании того же однорангового класса, который используется базовым классом элементов управления, поддержка модели автоматизации для вашего производного класса будет адекватной на базовом уровне.In some cases, so long as you use the same peer class as was used by the base control class, the automation support for your derived class is adequate at a basic level. Однако это следует проверить. Чтобы равноправный элемент мог правильно сообщить имя нового класса элемента управления, реализация однорангового элемента остается рекомендованным способом.However, you should test this, and implementing a peer is still recommended as a best practice so that the peer can correctly report the class name of your new control class. Реализация пользовательского элемента автоматизации осуществляется в несколько шагов.Implementing a custom automation peer has a few steps involved. Дополнительную информацию см. в разделе Настраиваемые одноранговые элементы автоматизации.For more info, see Custom automation peers.

Поддержка специальных возможностей в приложениях, поддерживающих межпрограммное взаимодействие XAML и Microsoft DirectXAssistive technology support in apps that support XAML / Microsoft DirectX interop

Содержимое Microsoft DirectX, размещенное в пользовательском интерфейсе XAML (с помощью SwapChainPanel или SurfaceImageSource), по умолчанию не поддерживает специальные возможности.Microsoft DirectX content that's hosted in a XAML UI (using SwapChainPanel or SurfaceImageSource) is not accessible by default. Образец межпрограммного взаимодействия XAML SwapChainPanel DirectX показывает, как создать одноранговые элементы автоматизации пользовательского интерфейса для содержимого DirectX.The XAML SwapChainPanel DirectX interop sample shows how to create UI Automation peers for the hosted DirectX content. Этот метод обеспечивает доступ к такому содержимому для модели автоматизации пользовательского интерфейса.This technique makes the hosted content accessible through UI Automation.