2010-04-07 19 views
6

Estoy desarrollando una aplicación WPF que debe ejecutarse utilizando el tema clásico de Windows. La aplicación crea un cuadro de diálogo que contiene un ListBox. Cuando se muestra el cuadro de diálogo, debe deshabilitarse durante 1 s antes de aceptar cualquier entrada. Estoy logrando esto con un disparador de estilo, y funciona. Sin embargo, el ListBox muestra un fondo blanco cuando está deshabilitado, del cual parece que no puedo deshacerme. Cuando se utiliza el tema Aero, el siguiente recurso de estilo corrige el problema:Cambiar el color de fondo del cuadro de lista deshabilitado en el tema clásico de Windows

<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent"/> 

Pero al utilizar el tema Windows clásico, el fondo blanco vuelve a aparecer. ¿Cómo puedo remediar la situación del tema clásico?

Respuesta

9

Después de seguir investigando, descubrí que el tema Windows Classic usa WindowBrushKey en lugar de ControlBrushKey. Por lo tanto, esto soluciona el problema de los temas Aero y Classic:

<Style TargetType="{x:Type ListBox}"> 
    <Style.Resources> 
     <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent"/> 
     <SolidColorBrush x:Key="{x:Static SystemColors.WindowBrushKey}" Color="Transparent"/> 
    </Style.Resources> 
Cuestiones relacionadas