如何将主题的默认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主题时似乎不正确。使用Luna主题,我希望在Windows XP中常见米色/褐色。
更新:在阅读完答案后,与StyleSnooper一起玩并思考更多相关内容后,我得出以下结论:
默认情况下,Window将使用SystemColors.WindowBrush作为其背景颜色。在我尝试的大多数主题中,这种颜色是白色的,这可能是好的。我相信白色也是WinForms中的Window背景色。但是,WinForms中的默认窗体背景颜色不是窗口背景而是控件。所以,如果我想要那种颜色,我会使用Lucas所指出的SystemColors.ControlBrush
。
有一次,我试图在Windows XP上实现WinForms的褐色/米色控制颜色。这在Windows Vista上可能无法实现,因为Vista上的控件颜色有点灰色。在Windows Vista上运行WinForms应用程序不会将其呈现为米色/褐色,而是灰色。在这种情况下,我想我们必须应用我们自己的自定义样式来实现Vista上的“原始”Windows XP外观。
感谢大家帮我解决这个问题!
答案 0 :(得分:4)
应用主题是否实际上覆盖了我期望的系统画笔?如果是这样,你应该能够这样做:
<Window ...
Background="{x:Static SystemColors.WindowBrush}
...>
修改强>
根据Manga的评论,您可能希望使用SystemColors.ControlBrush来实现所需的效果,因为大多数系统上的WindowBrush都是白色的。 ControlBrush是您在Windows XP上看到的“灰白”颜色。
答案 1 :(得分:1)
我原本以为只需在Background
元素上保留Window
属性即可实现此目的。主题的重点在于它会影响视觉元素的默认外观,例如Window
。
编辑您可以查看StyleSnooper - 它可以让您查看控件的默认模板(例如Window)。您应该能够确定它为每个主题绑定的属性。