2009-10-03 38 views
9

Làm cách nào để gắn màu nền cửa sổ mặc định của chủ đề vào nền Cửa sổ?Làm cách nào để liên kết nền cửa sổ với màu nền của cửa sổ của chủ đề?

Tôi đã thử những điều sau đây:

<Window x:Class="Shell" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Shell" 
    Height="300" 
    Width="300" 
    Background="{DynamicResource WindowBackgroundBrush}" 
    > 

Nhưng màu nền ám như màu đen và điều đó dường như không đúng khi sử dụng theme Luna. Sử dụng chủ đề Luna, tôi sẽ mong đợi màu be/nâu nhạt thường thấy trong Windows XP.

UPDATE: Sau khi đọc câu trả lời của bạn, chơi với StyleSnooper và suy nghĩ một số chi tiết về vấn đề này tôi đã đi đến kết luận sau:

Window sẽ sử dụng SystemColors.WindowBrush như màu nền của nó theo mặc định. Màu này là màu trắng trong hầu hết các chủ đề tôi đã thử và đó có lẽ là OK. Tôi tin rằng màu trắng cũng là màu nền của Windows trong WinForms. Tuy nhiên, màu nền mẫu mặc định trong WinForms không phải là nền cửa sổ mà là điều khiển. Vì vậy, nếu tôi muốn màu đó tôi đã sử dụng SystemColors.ControlBrush như được chỉ ra bởi Lucas.

Tại một thời điểm, tôi đã cố gắng đạt được màu Kiểm soát nâu/be màu của WinForms trên Windows XP. Điều này có thể không thực hiện được trên Windows Vista vì màu Điều khiển trên Vista có màu xám. Chạy một ứng dụng WinForms trên Windows Vista sẽ không hiển thị nó dưới dạng màu be/nâu, nhưng màu xám. Trong trường hợp này, tôi đoán chúng ta phải áp dụng các phong cách tùy chỉnh của riêng mình để đạt được Windows XP "gốc" trên Vista.

Cảm ơn mọi người đã giúp tôi sắp xếp việc này!

+0

Bạn đã giải quyết vấn đề này chưa? Tôi muốn thay đổi nền trên một kích hoạt. – nportelli

+0

Điều này: http://stackoverflow.com/a/1955583/492 –

Trả lời

4

Việc áp dụng chủ đề có thực sự ghi đè lên các chổi hệ thống như tôi mong đợi không? Nếu vậy, bạn sẽ có thể để làm điều này:

<Window ... 
    Background="{x:Static SystemColors.WindowBrush} 
    ...> 

Sửa

Theo nhận xét của Manga, có thể bạn sẽ muốn sử dụng SystemColors.ControlBrush để đạt được hiệu quả mong muốn, bởi vì WindowBrush trên hầu hết các hệ thống màu trắng. ControlBrush là màu "off-white" mà bạn nhìn thấy trên Windows XP.

+1

Tôi nhận được vùng đất lầy trắng từ điều này, nhưng theo gợi ý đó, bạn có thể thử 'SystemColors.ControlBrush',' SystemColors.ControlDarkBrush', v.v. – Lucas

+0

+1 để chỉ cho tôi đúng hướng.Tuy nhiên tôi muốn chấp nhận một câu trả lời nơi SystemColors.ControlBrush được áp dụng cho nền như Lucas đề nghị. Về nhãn hiệu của bạn... –

1

Tôi đã nghĩ rằng chỉ cần rời khỏi thuộc tính Background không được đặt trên thành phần Window của bạn sẽ đạt được điều này. Toàn bộ điểm của một chủ đề là nó ảnh hưởng đến sự xuất hiện mặc định của các yếu tố hình ảnh như Window của bạn.

EDIT Bạn có thể xem StyleSnooper - nó sẽ cho phép bạn xem mẫu mặc định cho điều khiển (chẳng hạn như Cửa sổ). Bạn sẽ có thể xác định thuộc tính nào nó ràng buộc cho mỗi chủ đề.

+0

Áp dụng chủ đề Luna và để lại thuộc tính Nền của Cửa sổ không được đặt cho tôi nền trắng. Tôi sẽ mong đợi một nền màu be/nâu như bạn sẽ nhận được trong WinForms trên Windows XP hoặc một nền xám như bạn nhận được trong WinForms trên Vista. Nếu nền trắng là hành vi đúng, có lẽ tôi cần phải thuật lại câu hỏi của mình. –

+0

+1 để làm cho tôi suy nghĩ khác về điều này và chỉ cho tôi StyleSnooper! –

Các vấn đề liên quan