Expose basic accessibility information (Предоставление основных сведений о специальных возможностях)

Основные сведения о специальных возможностях часто классифицируются по имени, роли и значению. В этом разделе описывается код, помогающий приложению предоставлять основные сведения, необходимые вспомогательным технологиям.

Доступное имя

Доступное имя — это короткая описательная текстовая строка, которую средство чтения с экрана использует для объявления элемента пользовательского интерфейса. Задайте доступное имя для элементов пользовательского интерфейса, чтобы иметь значение, важное для понимания содержимого или взаимодействия с пользовательским интерфейсом. Такие элементы обычно включают изображения, поля ввода, кнопки, элементы управления и регионы.

В этой таблице описывается, как определить или получить доступное имя для различных типов элементов в пользовательском интерфейсе XAML.

Тип элемента Description
Статический текст Для элементов TextBlock и RichTextBlock доступное имя автоматически определяется из видимого (внутреннего) текста. Весь текст в этом элементе используется в качестве имени. См . имя из внутреннего текста.
Изображения Элемент XAML Image не имеет прямого аналога атрибута ALT HTML для img и аналогичных элементов. Используйте AutomationProperties.Name для предоставления имени или использования метода заголовка. См . имена доступных изображений.
Элементы формы Доступное имя элемента формы должно совпадать с меткой, отображаемой для этого элемента. См . метки и labeledBy.
Кнопки и ссылки По умолчанию доступное имя кнопки или ссылки основано на видимом тексте, используя те же правила, что и в разделе "Имя" из внутреннего текста. В случаях, когда кнопка содержит только изображение, используйте AutomationProperties.Name для предоставления текстового эквивалента предполагаемого действия кнопки.

Большинство элементов контейнера, таких как панели, не повышают их содержимое как доступное имя. Это связано с тем, что это содержимое элемента, которое должно сообщать имя и соответствующую роль, а не его контейнер. Элемент контейнера может сообщить, что это элемент, имеющий дочерние элементы в представлении Microsoft модель автоматизации пользовательского интерфейса, таким образом, логика вспомогательных технологий может пройти по нему. Но пользователям вспомогательных технологий обычно не нужно знать о контейнерах, поэтому большинство контейнеров не называются.

Роль и значение

Элементы управления и другие элементы пользовательского интерфейса, которые являются частью словаря XAML, реализуют модель автоматизации пользовательского интерфейса поддержку роли и значения отчетов в рамках их определений. Вы можете использовать средства модель автоматизации пользовательского интерфейса для изучения сведений о роли и значении элементов управления или ознакомиться с документацией по реализации AutomationPeer каждого элемента управления. Доступные роли в модель автоматизации пользовательского интерфейса платформе определяются в перечислении AutomationControlType. модель автоматизации пользовательского интерфейса клиентов, таких как вспомогательные технологии, могут получать сведения о роли, вызывая методы, предоставляемые платформой модель автоматизации пользовательского интерфейса с помощью automationPeer элемента управления.

Не все элементы управления имеют значение. Элементы управления, имеющие значение, сообщают об этих сведениях, чтобы модель автоматизации пользовательского интерфейса через одноранговые элементы и шаблоны, поддерживаемые этим элементом управления. Например, элемент формы TextBox имеет значение. Вспомогательные технологии могут быть клиентом модель автоматизации пользовательского интерфейса и могут обнаружить, что значение существует и что такое значение. В этом конкретном случае TextBox поддерживает шаблон IValueProvider с помощью определений TextBoxAutomationPeer.

Примечание.

В случаях, когда вы используете AutomationProperties.Name или другие методы для явного предоставления доступного имени, не включайте тот же текст, что и для роли элемента управления или сведений о типе в доступном имени. Например, не включать строки, такие как "button" или "list" в имя. Сведения о роли и типе поступают из другого свойства модель автоматизации пользовательского интерфейса (LocalizedControlType), предоставляемого поддержкой элемента управления по умолчанию для модель автоматизации пользовательского интерфейса. Многие вспомогательные технологии добавляют LocalizedControlType к доступному имени, поэтому дублирование роли в доступном имени может привести к ненужным повторяющимся словам. Например, если вы даете элементу управления Button доступное имя "button" или включаете "button" в качестве последней части имени, это может быть прочитано средствами чтения с экрана как "кнопка кнопки". Этот аспект информации о специальных возможностях следует проверить с помощью экранного диктора.

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

Платформа модель автоматизации пользовательского интерфейса имеет концепцию представлений дерева, где модель автоматизации пользовательского интерфейса клиенты могут получать связи между элементами в пользовательском интерфейсе с помощью трех возможных представлений: необработанных, элементов управления и содержимого. Представление элемента управления — это представление, которое часто используется клиентами модель автоматизации пользовательского интерфейса, так как оно обеспечивает хорошее представление и организацию элементов в пользовательском интерфейсе, которые являются интерактивными. Средства тестирования обычно позволяют выбрать представление дерева, используемое при представлении средства организации элементов.

По умолчанию любой производный класс Control и несколько других элементов будут отображаться в представлении элемента управления, когда платформа модель автоматизации пользовательского интерфейса представляет пользовательский интерфейс для приложения Windows. Но иногда элемент не отображается в представлении элемента управления из-за композиции пользовательского интерфейса, где этот элемент дублирует информацию или представляет информацию, которая не имеет значения для сценариев специальных возможностей. Используйте присоединенное свойство AutomationProperties.AccessibilityView , чтобы изменить способ предоставления элементов представлениям дерева. Если вы помещаете элемент в необработанное дерево, большинство вспомогательных технологий не сообщают об этом элементе в рамках своих представлений. Чтобы просмотреть некоторые примеры того, как это работает в существующих элементах управления, откройте файл XAML-макета generic.xaml в текстовом редакторе и найдите AutomationProperties.AccessibilityView в шаблонах.

Имя из внутреннего текста

Чтобы упростить использование строк, которые уже существуют в видимом пользовательском интерфейсе для значений доступных имен, многие элементы управления и другие элементы пользовательского интерфейса обеспечивают поддержку автоматического определения имени по умолчанию на основе внутреннего текста в элементе или строковых значений свойств контента.

Примечание.

При применении модель автоматизации пользовательского интерфейса длина имени со специальными возможностями не может превышать 2048 символов. Если строка, используемая для автоматического определения имен, превышает это ограничение, то доступное имя усечено в этот момент.

Доступные имена изображений

Для поддержки средств чтения с экрана и предоставления основных сведений об идентификации каждого элемента в пользовательском интерфейсе иногда необходимо предоставить замещающие тексты нетекстовые сведения, такие как изображения и диаграммы (исключая исключительно декоративные или структурные элементы). Эти элементы не имеют внутреннего текста, поэтому доступное имя не будет иметь вычисляемого значения. Вы можете задать доступное имя непосредственно, задав AutomationProperties.Name присоединенное свойство, как показано в этом примере.

XAML

<!-- Comment -->
<Image Source="product.png"
  AutomationProperties.Name="An image of a customer using the product."/>

Кроме того, рассмотрите возможность включения текстового заголовка, отображаемого в видимом пользовательском интерфейсе, а также в качестве сведений о специальных возможностях, связанных с метками для содержимого изображения. Приведем пример:

XAML

<Image HorizontalAlignment="Left" Width="480" x:Name="img_MyPix"
  Source="snoqualmie-NF.jpg"
  AutomationProperties.LabeledBy="{Binding ElementName=caption_MyPix}"/>
<TextBlock x:Name="caption_MyPix">Mount Snoqualmie Skiing</TextBlock>

Метки и метки

Предпочтительный способ связать метку с элементом формы — использовать TextBlock с текстом метки x:Name, а затем задать присоединенное свойство AutomationProperties.LabeledBy для ссылки на метку TextBlock по имени XAML. Если вы используете этот шаблон, вспомогательные технологии могут использовать текст метки в качестве имени для поля формы. Ниже приведен пример, показывающий этот метод.

XAML

<StackPanel x:Name="LayoutRoot" Background="White">
   <StackPanel Orientation="Horizontal">
     <TextBlock Name="lbl_FirstName">First name</TextBlock>
     <TextBox
      AutomationProperties.LabeledBy="{Binding ElementName=lbl_FirstName}"
      Name="tbFirstName" Width="100"/>
   </StackPanel>
   <StackPanel Orientation="Horizontal">
     <TextBlock Name="lbl_LastName">Last name</TextBlock>
     <TextBox
      AutomationProperties.LabeledBy="{Binding ElementName=lbl_LastName}"
      Name="tbLastName" Width="100"/>
   </StackPanel>
 </StackPanel>

Описание со специальными возможностями (необязательно)

Описание со специальными возможностями предоставляет дополнительные сведения о конкретном элементе пользовательского интерфейса. Обычно вы предоставляете доступное описание, если только доступное имя не передает назначение элемента.

Средство чтения с экрана экранного диктора считывает доступное описание элемента только в том случае, если пользователь запрашивает дополнительные сведения об элементе, нажав клавишу CapsLock+F.

Доступное имя предназначено для идентификации элемента управления, а не для полного документирования его поведения. Если краткое описание недостаточно, чтобы объяснить элемент управления, можно задать присоединенное свойство AutomationProperties.HelpText в дополнение к AutomationProperties.Name.

Тестирование специальных возможностей ранних и часто

В конечном счете, лучший подход для поддержки средств чтения с экрана заключается в тестировании приложения с помощью средства чтения с экрана самостоятельно. Это покажет, как работает средство чтения с экрана и какие основные сведения о специальных возможностях могут быть отсутствуют в приложении. Затем можно соответствующим образом настроить значения свойств пользовательского интерфейса или модель автоматизации пользовательского интерфейса. Дополнительные сведения см. в разделе "Тестирование специальных возможностей".

Один из инструментов, которые можно использовать для тестирования специальных возможностей, называется AccScope. Инструмент AccScope особенно полезен, так как вы можете видеть визуальные представления пользовательского интерфейса, которые представляют, как вспомогательные технологии могут просматривать приложение как дерево автоматизации. В частности, есть режим экранного диктора, который дает представление о том, как экранный диктор получает текст из приложения и как он упорядочивает элементы в пользовательском интерфейсе. AccScope разработан таким образом, чтобы его можно было использовать и использовать в течение цикла разработки для приложения, даже на этапе предварительного проектирования. Дополнительные сведения см. в статье AccScope.

Доступные имена из динамических данных

Windows поддерживает множество элементов управления, которые можно использовать для отображения значений, поступающих из связанного источника данных, с помощью функции, известной как привязка данных. При заполнении списков элементами данных может потребоваться использовать метод, который задает доступные имена для элементов списка с привязкой к данным после заполнения начального списка. Дополнительные сведения см. в разделе "Сценарий 4" в примере специальных возможностей XAML.

Доступные имена и локализация

Чтобы убедиться, что доступное имя также является локализованным элементом, следует использовать правильные методы хранения локализуемых строк в качестве ресурсов, а затем ссылки на подключения к ресурсам со значениями директив x:Uid. Если доступное имя поступает из явно заданного AutomationProperties.Name использования, убедитесь, что строка также локализована.

Обратите внимание, что присоединенные свойства, такие как свойства AutomationProperties , используют специальный синтаксис для имени ресурса, чтобы ресурс ссылался на присоединенное свойство, примененное к конкретному элементу. Например, имя ресурса для AutomationProperties.Name, примененное к именованным элементу MediumButton пользовательского интерфейса: MediumButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name