2010-04-07 11 views
6

Pracuję nad aplikacją WPF, która musi działać z klasycznym motywem Windows. Aplikacja tworzy okno dialogowe zawierające ListBox. Po wyświetleniu okna dialogowego musi być wyłączone na 1s przed przyjęciem jakichkolwiek danych wejściowych. Osiągam to za pomocą wyzwalacza stylu i działa. Jednak ListBox pokazuje białe tło, gdy jest wyłączone, czego nie mogę się pozbyć. Podczas korzystania z motywu Aero, co następuje zasobami styl rozwiązuje problem:Zmiana koloru tła wyłączonego listbox w klasycznym motywie Windows

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

Ale podczas korzystania motyw Klasyczny Windows, białe tło pojawia. Jak mogę zaradzić sytuacji w klasycznym motywie ???

Odpowiedz

9

Po dalszych badaniach odkryłem, że motyw Klasyczny Windows używa WindowBrushKey zamiast ControlBrushKey. Dlatego rozwiązuje problem zarówno dla motywów Aero, jak i 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>