如何将主题的默认窗口背景颜色绑定(bind)到窗口背景?
我尝试了以下方法:
<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。所以,如果我想要那种颜色,我会使用
SystemColors.ControlBrush
正如 Lucas 所指出的那样.有一次,我试图在 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 上看到的“灰白色”颜色。
关于.net - 如何将窗口背景绑定(bind)到主题的窗口背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1513718/