如何将窗口背景绑定到主题的窗口背景颜色?
Posted
技术标签:
【中文标题】如何将窗口背景绑定到主题的窗口背景颜色?【英文标题】:How to bind Window background to a theme's Window background color? 【发布时间】:2010-12-03 13:52:50 【问题描述】:如何将主题的默认窗口背景颜色绑定到窗口背景?
我尝试了以下方法:
<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 外观。
感谢大家帮我解决这个问题!
【问题讨论】:
你解决了吗?我想更改触发器的背景。 这个:***.com/a/1955583/492 【参考方案1】:应用主题是否真的会像我预期的那样覆盖系统画笔?如果是这样,您应该可以这样做:
<Window ...
Background="x:Static SystemColors.WindowBrush
...>
编辑
根据 Manga 的评论,您可能希望使用 SystemColors.ControlBrush 来实现所需的效果,因为大多数系统上的 WindowBrush 是白色的。 ControlBrush 是您在 Windows XP 上看到的“灰白色”颜色。
【讨论】:
我从这里得到了白色背景,但是按照这个建议,你可以试试SystemColors.ControlBrush
、SystemColors.ControlDarkBrush
等
+1 为我指明了正确的方向。但是,我想接受像 Lucas 建议的那样将 SystemColors.ControlBrush 应用于背景的答案。在你的标记上......【参考方案2】:
我原以为只需在 Window
元素上未设置 Background
属性即可实现此目的。主题的全部意义在于它会影响视觉元素的默认外观,例如您的Window
。
编辑您可能会查看StyleSnooper - 它可以让您查看控件(例如窗口)的默认模板。您应该能够确定它为每个主题绑定的属性。
【讨论】:
应用 Luna 主题并保留我的 Window 的 Background 属性未设置会给我一个白色背景。我希望您在 Windows XP 上的 WinForms 中获得米色/棕色背景,或者在 Vista 上的 WinForms 中获得灰色背景。如果白色背景是正确的行为,也许我需要改写我的问题。 +1 让我对这件事有了不同的看法,并将我指向 StyleSnooper!以上是关于如何将窗口背景绑定到主题的窗口背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章