如何將視窗背景綁定到主題的視窗背景顏色?
如何將主題的預設視窗背景顏色綁定到視窗背景?
我嘗試了以下方法:
<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 主題時看起來不正確。使用 Luna 主題,我希望 Windows XP 中經常出現米色/棕色。
**更新:**在閱讀了您的答案、使用StyleSnooper並對此進行了更多思考之後,我得出了以下結論:
預設情況下,視窗將使用 SystemColors.WindowBrush 作為其背景顏色。在我嘗試過的大多數主題中,這種顏色都是白色的,這可能沒問題。我相信白色也是 WinForms 中的視窗背景顏色。但是,WinForms 中預設的 Form 背景顏色不是 Window 背景而是 Control。所以,如果我想要Lucas
SystemColors.ControlBrush指出的那種顏色,我已經使用了。有一次,我試圖在 Windows XP 上實現 WinForms 的棕色/米色控制顏色。這在 Windows Vista 上可能是不可能的,因為 Vista 上的控制顏色是灰色的。在 Windows Vista 上執行 WinForms 應用程序不會將其呈現為米色/棕色,而是灰色。在這種情況下,我想我們必須應用我們自己的自定義樣式才能在 Vista 上實現“原始”Windows XP 外觀。
謝謝大家幫我解決這個問題!
應用主題實際上是否會像我預期的那樣覆蓋系統畫筆?如果是這樣,你應該能夠做到這一點:
<Window ... Background="{x:Static SystemColors.WindowBrush} ...>編輯
根據 Manga 的評論,您可能希望使用 SystemColors.ControlBrush 來實現所需的效果,因為大多數係統上的 WindowBrush 是白色的。ControlBrush 是您在 Windows XP 上看到的“灰白色”顏色。
我原以為只需在您的元素上保留未設置的
Background屬性即可實現此目的。Window主題的全部意義在於它會影響視覺元素的預設外觀,例如您的Window.編輯您可能會查看StyleSnooper - 它可以讓您查看控制項的預設模板(例如 Window)。您應該能夠確定它為每個主題綁定的屬性。