Tengo un TextBox que se define a través de ControlTemplate. Debido a ControlTemplate, el TextBox ya no se atenúa automáticamente cuando la propiedad IsEnabled se configura como falsa.BackgroundColor de un cuadro de texto deshabilitado
para proporcionar esta funcionalidad, uso el siguiente trigger dentro del ControlTemplate:
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{x:Static SystemColors.GrayTextBrush}" />
</Trigger>
Esto funciona bien. Sin embargo, tengo que establecer también BackgroundColor pero no he encontrado una entrada correspondiente en SystemColors
. ¿Qué entrada es la entrada correcta para el fondo de controles deshabilitados (TextBoxes)? ¿Hay otra fuente que SystemColors?
No quiero usar un valor fijo. p.ej. estableciendo Background="#f4f4f4"
, porque me temo que en algunos entornos, el fondo desactivado tiene otro valor y luego mi control no se ve como debería o incluso es ilegible (si, por ejemplo, el valor de GrayTextBrush está cerca de # f4).
+1 Gracias. Publicación interesante, sin embargo, la respuesta a mi pregunta no la he encontrado. ¿Me he perdido algo? – HCL
En lugar de utilizar un valor fijo para su fondo, ¿desea utilizar un valor de Color del sistema, correcto? Al observar los estilos XAML predeterminados, parece que Microsoft usa el valor SystemColors.ControlBrushKey como color de fondo para los controles que están deshabilitados. Este color debe contrastar con SystemColors.GrayTextBrush, por lo que el usuario podrá leer el valor cuando el control esté deshabilitado. –
+1 para una gran respuesta. Observe el uso de DynamicResource para que la aplicación cambie automáticamente el color si el usuario cambia el color en el tema de Windows, mientras la aplicación se está ejecutando. –