2010-04-07 32 views
6

Tôi đang phát triển một ứng dụng WPF phải chạy bằng cách sử dụng chủ đề Windows Classic. Ứng dụng tạo ra một hộp thoại có chứa một ListBox. Khi hộp thoại được hiển thị, nó phải được tắt trong 1s trước khi chấp nhận bất kỳ đầu vào nào. Tôi đang hoàn thành điều này với một kích hoạt phong cách, và nó hoạt động. Tuy nhiên, ListBox cho thấy một nền trắng khi nó bị vô hiệu hóa, mà tôi dường như không thể loại bỏ. Khi sử dụng chủ đề aero, tài nguyên kiểu sau khắc phục sự cố:Thay đổi màu nền của hộp danh sách bị tắt trong cửa sổ chủ đề cổ điển

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

Nhưng khi sử dụng chủ đề Windows Classic, nền trắng sẽ xuất hiện trở lại. Làm thế nào tôi có thể khắc phục tình hình cho chủ đề cổ điển ???

Trả lời

9

Sau khi nghiên cứu sâu hơn, tôi phát hiện ra rằng chủ đề Windows Classic sử dụng WindowBrushKey thay vì ControlBrushKey. Do đó, điều này khắc phục sự cố cho cả chủ đề Aero và 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> 
Các vấn đề liên quan