Pregunta

Tengo un problema con el control WPF Tab View con el que esperaba que alguien aquí pudiera ayudarme.

Quiero que mi control de vista de pestañas use esquinas redondeadas para los encabezados de pestañas, porque creo que las pestañas redondeadas se ven mejor.

Para hacer esto, modifiqué la plantilla de control predeterminada para la pestaña mediante el uso de " Editar Copia " comando en Expression Blend. Luego solo configuro el radio de la esquina para el "borde" del encabezado de la pestaña.

El problema con este enfoque, sin embargo, es que el " Editar Copia " el comando termina generando valores de color literales para los pinceles de degradado utilizados para mostrar el "Activo" y "Ratón encima" fondos de pestaña.

Esto causa problemas cuando "Hola contraste" El modo está habilitado. En lugar de cambiar al esquema de color de alto contraste, como los otros controles, la pestaña con la plantilla modificada usará los valores de color literales especificados en los pinceles de degradado para las pestañas de pestañas activas y de mouse. Esto termina haciendo que esas pestañas sean ilegibles, porque el texto en el encabezado de la pestaña se cambia a "blanco". cuando el sistema operativo cambia al modo de alto contraste (no se puede leer el texto blanco sobre un fondo gris).

Pensé que podría volver a las pestañas cuadradas cuando el modo de alto contraste esté habilitado. Eso solucionaría este problema en particular. Sin embargo, imagino que habrá problemas similares con los usuarios que tengan instalados temas personalizados de Windows.

Entonces, lo que me pregunto es:

  1. ¿Hay alguna forma de cambiar los gradientes para que apunten a los recursos del sistema en lugar de los valores literales para que los colores se actualicen correctamente cuando se habilita el modo de alto contraste?
  2. O, ¿hay alguna forma de establecer el radio de la esquina en el borde del encabezado de la pestaña sin crear una nueva plantilla de control?

Edición :

Creo que debería ser un poco más explícito sobre lo que estoy buscando. Quiero un control de pestaña que se comporte exactamente como el control de pestaña predeterminado, excepto que las esquinas del encabezado de pestaña son redondeadas. De forma predeterminada, un control de pestañas usará degradados para los fondos de pestañas y resaltará " pestañas inactivas cuando el usuario pasa el mouse sobre ellas. También responderá correctamente y cambiará sus colores y su comportamiento al pasar el mouse cuando el sistema operativo cambie al modo de alto contraste. Todavía necesito este comportamiento.

Al crear una copia de la plantilla de control predeterminada en Blend, se crea una plantilla de control que no funciona correctamente en modo de contraste alto. Quiero saber qué debo hacer con la plantilla de control, o el código en mi ventana, para que la plantilla de control generada funcione correctamente en modo de alto contraste.

¿Fue útil?

Solución

No hay forma de hacer esquinas de pestañas redondeadas sin crear una plantilla personalizada para TabItem. Haciendo el " Editar Copia " Creo que crea una plantilla predeterminada basada en el tema actual de las ventanas que tiene (sin embargo, puedo estar equivocado. Creo que si realiza un volcado de plantilla de control, obtendrá la plantilla de control actual que está determinada por el tema del sistema, como en la presentación). aero o algo por el estilo). Sin embargo, si desea suministrar los colores que el sistema usará cuando se realicen los cambios, entonces sepárelos así en su plantilla:

Color="{DynamicResource {x:Static SystemColors.XXXX}"

Esto usará los colores del sistema para diseñar el control y se actualizará para reflejar los cambios en el tema del sistema.

Otros consejos

Agregue un control de estilo simple a su ventana en Blend. Esto agregará SimpleStyles.xaml, incluido uno para el control de pestañas.

Eche un vistazo a Family.Show y cómo hacen los temas negros y plateados.

Entre estos dos debería tener un buen ejemplo de cómo personalizar el control de pestañas y manejar diferentes temas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top