.net - 如何将窗口背景绑定(bind)到主题的窗口背景颜色?

标签 .net wpf data-binding xaml themes

如何将主题的默认窗口背景颜色绑定(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/

相关文章:

c# - DataBindings.Add 使用 IFormatProvider

c# - Windows 10 1803 上的 RichTextBox 中没有下划线的超链接

c# - 如何在 xaml 中声明 Storyboard并从代码中运行它

c# - 剪辑区域不起作用

wpf - 字符串格式正值和负值以及条件颜色格式 XAML

data-binding - 空值上的 Kendo MVVM 绑定(bind)绑定(bind)为对象

javascript - AngularJS 的问题和 Select 绑定(bind)不加载默认值

c# - 通过过滤将列表<>添加到另一个列表<>

.net - 如何在不更改迁移文件的情况下添加默认值为 "false"的新 bool 列?

c# - 必须在非通用静态类中定义扩展方法 - 从文档中提取 XML