Поддержка тем с высокой контрастностью

Поддержка тем с высокой контрастностью (XAML)

[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]

Версию для HTML и JavaScript см. в разделе Поддержка тем с высокой контрастностью (HTML).

Приложения среды выполнения Windows на C++, C# или Visual Basic поддерживают темы с высокой контрастностью по умолчанию. Если пользователь выбрал тему с высокой контрастностью в системных параметрах или в средствах специальных возможностей, платформа автоматически использует настройки цветов и стиля, обеспечивающие высокую контрастность макета, элементов управления и компонентов в пользовательском интерфейсе.

Такая поддержка по умолчанию основана на использовании шаблонов и тем по умолчанию. Эти темы и шаблоны ссылаются в определениях ресурсов на системные цвета. Когда система использует режим высокой контрастности, источники ресурсов изменяются автоматически. Если же вы используете для элементов управления другие шаблоны, темы и стили, будьте внимательны: не отключайте встроенную поддержку высокой контрастности. Если для создания стиля вы используете один из конструкторов XAML для Microsoft Visual Studio, то вместе с основной темой конструктор будет создавать отдельную тему с высокой контрастностью каждый раз, когда вы определите шаблон, который значительно отличается от шаблона по умолчанию. Отдельные словари тем переходят в коллекцию ThemeDictionaries, специальное свойство элемента ResourceDictionary.

Дополнительные сведения о темах и шаблонах элементов управления см. в статье Краткое руководство: шаблоны элементов управления. Зачастую полезно ознакомиться со словарями ресурсов XAML и темами для конкретных элементов управления и узнать, как строятся темы и как они ссылаются на ресурсы, которые в целом похожи, но все же различаются для каждой возможной настройки высокой контрастности.

Обнаружение включения темы с высокой контрастностью

Приложение среды выполнения Windows может использовать члены класса AccessibilitySettings, чтобы определить текущие параметры тем с высокой контрастностью. Свойство HighContrast определяет, установлена ли в данный момент тема с высокой контрастностью. Если свойство HighContrast имеет значение true, то нужно проверить свойство HighContrastScheme, чтобы получить имя используемой темы. Типичные значения HighContrastScheme, на которые должен реагировать ваш код, — "High Contrast White" (Контрастная белая) и "High Contrast Black" (Контрастная черная). Определяемые в XAML ключи ResourceDictionary не могут содержать пробелов. Поэтому ключи этих тем в словаре ресурсов обычно имеют вид "HighContrastWhite" и "HighContrastBlack" соответственно. Следует также предусмотреть логику перехода для темы с высокой контрастностью по умолчанию на случай, если значение задается другой строкой. Такую логику демонстрирует пример XAML с высокой контрастностью.

Примечание  Убедитесь, что конструктор AccessibilitySettings вызывается из области, в которой приложение инициализировано и уже отображает содержимое.
 

Начиная с Windows 8.1 приложения могут переключаться на значения ресурсов для высокой контрастности во время выполнения. Это работает, если ресурсы запрашиваются при помощи расширения разметки ThemeResource в коде XAML стиля или шаблона. Такой прием с ThemeResource действует для всех тем по умолчанию (generic.xaml). Благодаря этому при использовании тем элементов управления по умолчанию можно переходить на высокую контрастность во время работы приложения. Если применить такой же прием с ресурсами ThemeResource в пользовательских шаблонах и стилях, эта возможность будет доступна также для пользовательских элементов управления и их стилей. Однако приложения, созданные для работы в Windows 8, не перезагружают ресурсы автоматически во время работы.

Поведение в Windows 8

В Windows 8 не поддерживалось расширение разметки ThemeResource. Оно становится доступным начиная с Windows 8.1. Кроме того, в Windows 8 не поддерживалось динамическое переключение ресурсов темы для приложения среды выполнения Windows. Чтобы обработать изменение темы для шаблонов и стилей XAML, приложение необходимо было перезапускать. Это неоптимально с точки зрения взаимодействия с пользователем, поэтому настоятельно рекомендуется перекомпилировать приложения для Windows 8.1, чтобы они могли использовать стили с помощью ThemeResource и динамически переключать темы по выбору пользователя. Приложения, которые скомпилированы для Windows 8, но выполняются в Windows 8.1, продолжают использовать правила, действующие в Windows 8.

Связанные разделы

Пример контрастности и параметров пользовательского интерфейса
Пример специальных возможностей XAML
Пример XAML с высокой контрастностью
AccessibilitySettings

 

 

Показ:
© 2016 Microsoft