Compatibilidad con temas de alto contraste (XAML)

¿Buscas la versión para HTML o JavaScript de este tema? Consulta Compatibilidad con temas de contraste alto (HTML).

Una aplicación de Windows en tiempo de ejecución mediante C++, C# o Visual Basic admite los temas de contraste alto de manera predeterminada. Si un usuario elige que el sistema use un tema de contraste alto en la configuración del sistema o en las herramientas de accesibilidad, el marco usa automáticamente la configuración de colores y estilos que producen un diseño y una representación de contraste alto para los controles y los componentes de la interfaz de usuario.

Esta compatibilidad predeterminada se basa en el uso de temas y plantillas predeterminados. Estos temas y plantillas hacen referencia a colores del sistema como definiciones de recursos, y los orígenes de los recursos se modifican automáticamente cuando el sistema usa un modo de contraste alto. Sin embargo, si usas estilos, temas y plantillas personalizados para el control, ten cuidado de no deshabilitar la compatibilidad integrada para contraste alto. Si usas uno de los diseñadores XAML para Microsoft Visual Studio para la aplicación de estilos, el diseñador generará un tema de contraste alto independiente junto con el tema principal siempre que definas una plantilla que sea significativamente diferente a la predeterminada. Los diccionarios de temas independientes se incluyen en la colección ThemeDictionaries, una propiedad dedicada de un elemento ResourceDictionary.

Para obtener más información sobre temas y plantillas de control, consulta Inicio rápido: plantillas de control. Suele ser muy revelador consultar controles específicos en los temas y diccionarios de recursos XAML y ver cómo se construyen los temas y cómo hacen referencia a los recursos que son similares aunque diferentes para cada posible opción de configuración de contraste alto.

Detectar cuando está habilitado un tema de contraste alto

Una aplicación de Windows en tiempo de ejecución puede usar miembros de la clase AccessibilitySettings para detectar la configuración actual para temas de contraste alto. La propiedad HighContrast determina si un tema de contraste alto está seleccionado actualmente. Si HighContrast es true, el siguiente paso es comprobar el valor de la propiedad HighContrastScheme para obtener el nombre del tema de contraste alto que se usa. Los temas "Blanco en contraste alto" y "Negro en contraste alto" normalmente son valores de HighContrastScheme a los que el código debería responder. Las claves de ResourceDictionary definidas por XAML no pueden tener espacios, por lo que las claves para estos temas en un diccionario de recursos normalmente son "HighContrastWhite" y "HighContrastBlack", respectivamente. También deberías tener una lógica de reserva para un tema de contraste alto predeterminado en caso de que el valor sea alguna otra cadena. La muestra de contraste alto XAML permite ver esta lógica.

Nota  Asegúrate de llamar al constructor AccessibilitySettings desde un ámbito cuando la aplicación esté inicializada y ya esté mostrando contenido.

A partir de Windows 8.1, las aplicaciones pueden cambiar para usar valores de recursos de contraste alto mientras la aplicación se encuentra en ejecución. Esto funciona siempre que los recursos se soliciten usando la extensión de marcado ThemeResource en el código XAML del estilo o la plantilla. Todos los temas predeterminados (generic.xaml) usan esta técnica de ThemeResource, por lo que obtendrás este comportamiento si usas los temas de control predeterminados. Los controles personalizados o los estilos de controles personalizados pueden hacerlo si también usaste esta técnica de recurso ThemeResource en tus plantillas y estilos personalizados. Sin embargo, las aplicaciones creadas para Windows 8 no vuelven a cargar los recursos automáticamente mientras la aplicación está en ejecución.

Comportamiento de Windows 8

Windows 8 no era compatible con la extensión de marcado ThemeResource. Esta está disponible a partir de Windows 8.1. Además, Windows 8 no admitía la conmutación dinámica de recursos relacionados por tema para una aplicación de Windows en tiempo de ejecución. La aplicación tenía que reiniciarse para elegir el cambio de tema de las plantillas y estilos de XAML. Esto no es una buena experiencia de usuario, por lo que se recomienda volver a compilar las aplicaciones para Windows 8.1, para que puedan usar estilos con usos de ThemeResource y puedan conmutar dinámicamente temas cuando lo haga el usuario. Las aplicaciones compiladas para Windows 8 que se ejecuten en Windows 8.1 siguen usando el comportamiento de Windows 8.

Temas relacionados

Muestra de configuración y contraste de la interfaz de usuario
Muestra de accesibilidad XAML
Muestra de contraste alto XAML
AccessibilitySettings

 

 

Mostrar:
© 2015 Microsoft