2009-10-03 59 views
9

如何將主題的默認Window背景顏色綁定到Window背景?如何將Window背景綁定到主題的Window背景顏色?

我已經試過如下:

<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}" 
    > 

但底色呈現爲黑色,並且使用月神主題時看起來不正確。使用Luna主題我期望在Windows XP中經常可以找到米色/棕色。

UPDATE:閱讀你的答案,與StyleSnooper玩和思考一些關於這個,我得出以下結論後:

的窗口將使用SystemColors.WindowBrush因爲默認情況下它的背景色。在我嘗試過的大多數主題中,這種顏色是白色的,這可能是好的。我相信白色也是WinForms中的窗口背景色。但是,WinForms中的默認窗體背景顏色不是「窗口背景」,而是「控制」。所以,如果我想要這種顏色,我使用SystemColors.ControlBrush正如Lucas所指出的。

在某一點上,我試圖在Windows XP上實現WinForms的棕色/米色控件顏色。這在Windows Vista上可能無法實現,因爲Vista上的控件顏色是灰色的。在Windows Vista上運行WinForms應用程序不會呈現爲米色/棕色,而是灰色。在這種情況下,我想我們必須應用我們自己的自定義樣式才能在Vista上實現「原始」Windows XP外觀。

謝謝大家幫我解決這個問題!

+0

你解決了嗎?我想改變觸發器的背景。 – nportelli 2009-10-19 21:05:25

+0

這個:http://stackoverflow.com/a/1955583/492 – 2016-05-11 08:54:14

回答

4

應用主題是否會像我期望的那樣覆蓋系統畫筆?如果是這樣,你應該能夠做到這一點:

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

編輯

按照漫畫的評論,你可能會想使用SystemColors.ControlBrush達到預期的效果,因爲WindowBrush上最系統是白色的。 ControlBrush是您在Windows XP上看到的「灰白色」顏色。

+1

我從這裏得到了白色的背景,但是按照這個建議,你可以嘗試'SystemColors.ControlBrush','SystemColors.ControlDarkBrush'等 – Lucas 2009-10-11 05:07:58

+0

+1來指向正確的方向。不過,我想接受一個答案,就像Lucas建議的那樣,將SystemColors.ControlBrush應用於背景。在你的標記上... – 2009-10-20 05:28:46

1

我本來以爲只需將Background屬性未設置在Window元素上即可實現此功能。一個主題的重點在於它會影響視覺元素的默認外觀,例如Window

編輯您可能會看StyleSnooper - 它可以讓您查看控件(如窗口)的默認模板。您應該能夠確定它爲每個主題綁定的屬性。

+0

應用Luna主題,並保留我的窗口的背景屬性未設置給我一個白色的背景。我期望一個米色/棕色的背景,就像你在Windows XP上的WinForms中獲得的那樣,或者你在WinForms上獲得一個灰色的背景。如果白色背景是正確的行爲,也許我需要重新說明我的問題。 – 2009-10-03 15:16:30

+0

+1讓我對此有不同的想法,並將我指向StyleSnooper! – 2009-10-20 05:29:50