为啥我运行程序时WPF标题栏背景是白色的?

Posted

技术标签:

【中文标题】为啥我运行程序时WPF标题栏背景是白色的?【英文标题】:Why is WPF Titlebar background white when I run program?为什么我运行程序时WPF标题栏背景是白色的? 【发布时间】:2019-05-28 16:28:14 【问题描述】:

Xaml Designer 将窗口标题栏显示为深灰色(默认),但是当我运行应用程序时,标题栏是纯白色的。

标题栏颜色不应该使用我的 Windows 主题设置吗?为什么不呢?

我启动了一个全新的 .NET Framework 4.6.2 WPF 应用程序。我完全没有改变。我运行应用程序,我得到了描述的行为。

这是主窗口的默认 XAML 代码:

<Window x:Class="WpfApp2.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WpfApp2"
    mc:Ignorable="d"
    Title="MainWindow" Height="450" Width="800">
<Grid>

</Grid>

这是 App.xaml:

<Application x:Class="WpfApp2.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:local="clr-namespace:WpfApp2"
         StartupUri="MainWindow.xaml">
<Application.Resources>

</Application.Resources>

【问题讨论】:

在 windows10 中,它取决于 Windows 主题设置,不确定早期版本。 呃。好吧,我的 Windows 10 主题设置为深色,我的所有应用程序都显示深灰色标题栏。甚至 XAML 设计器也显示深灰色。但是当我运行应用程序时,它是神秘的白色!这完全令人费解!我在 Google 上找不到任何关于它的信息。 您可以添加您的 XAML 示例吗? 我添加了代码并改进了帖子。 @JamesHoux 您可以通过调用 COM api blogs.msdn.com/wpfsdk/archive/2008/09/08/custom-window-chrome-in-wpf.aspx docs docs.microsoft.com/en-us/windows/desktop/dwm/customframe 【参考方案1】:

我没有意识到这一点,但应用程序将使用默认的白色标题栏,除非您在 Windows 主题设置中特别选中将主题重音应用于标题栏。

起初我对此感到困惑的原因是 XAML 设计器窗口在设计视图中将窗口标题栏显示为深灰色。它在运行时变为白色。我错误地认为深灰色的标题栏尊重了深色 Windows 主题。它不是!它实际上是在尊重 Dark Visual Studio 主题。

显然,Visual Studio 中选择的主题决定了 XAML 设计器中的标题栏颜色,这会导致应用程序运行时的外观错误。

我一开始就发布了这个问题,我觉得很愚蠢,但我只是认为存在某种我不知道的 XAML 配置点。 :P

【讨论】:

以上是关于为啥我运行程序时WPF标题栏背景是白色的?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 7 上更改状态栏背景颜色和文本颜色?

MVVM WPF:为啥在运行应用程序时更新文本框中的文本后模型中的属性始终为空?

如何在iOS 7上更改状态栏背景颜色和文本颜色? Warif Akhand Rishi

为啥我的反应网络应用程序返回一个白色/空白页面?

WPF游览器程序为啥启动时候打开一个world文件而不运行程序?

隐藏 NavBar 但显示带背景的状态栏