C# 如何在WPF中获得暗模式的黑色标题栏

C# 如何在WPF中获得暗模式的黑色标题栏,c#,wpf,C#,Wpf,我有一个WPF应用程序。我阅读(并观察)注册表项HKEY\U CURRENT\U USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize\AppsUseLightTheme,查看暗模式是活动还是非活动(以及何时)。我不想使用WPF主题来使应用程序变暗或变亮 无论如何,我没有找到一个方法来改变标题栏。一定有办法,因为当黑暗模式打开时,Windows资源管理器也会获得一个黑暗的标题栏。我不知道还有其他的应用程序有这样的功能

我有一个WPF应用程序。我阅读(并观察)注册表项
HKEY\U CURRENT\U USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize\AppsUseLightTheme
,查看暗模式是活动还是非活动(以及何时)。我不想使用WPF主题来使应用程序变暗或变亮

无论如何,我没有找到一个方法来改变标题栏。一定有办法,因为当黑暗模式打开时,Windows资源管理器也会获得一个黑暗的标题栏。我不知道还有其他的应用程序有这样的功能

我知道CMD窗口在黑暗模式下也会有一个黑色标题栏,但我认为这是不同的,因为控制台窗口是特别的


那么,我如何告诉Windows我的应用程序支持或处于暗模式,以便标题栏变为黑色?

WPF有一个SystemColor静态类,包含所有主题颜色(或多或少),请在DynamicSource中使用它

如果您想要更多的工作(但更多的控制),请查找“AccentColors p/Invoke”

如果你想改变“标题栏”的颜色,你要寻找窗口的“铬”


你的WPF应用程序中不能有黑暗模式标题栏。支持暗模式的标题栏适用于UWP应用程序。对于WPF应用程序,您必须使用WindowStyle=“None”并创建自己的标题栏

这是一本与此相关的有趣读物:

看起来你可能正在寻找这样的东西,而这正是我想要的。常规Windows主题必须具有文件资源管理器使用的黑色标题栏。我想知道,如何告诉系统使用深色标题栏而不是浅色标题栏。(这意味着无需使用自定义的Chrome。)Windows Chrome将进入该方向。但那时我必须自己去实现一切。我以为Windows已经有了它,而且我已经想使用它了。我不知道如何使用WPF CLR程序集来实现软性和易用性。如果你想要一个一键式的奇迹,你可以看看Mahapps。Metro:我仍然想知道,如何利用系统功能实现它。但是这个包裹看起来很有趣。我来看看。谢谢。@Martinibanco“如何使用系统功能”。。。在c#wpf/uwp中,答案很简单:你不能。使用P/Invoke或使用Chrome控件。。。你几乎可以做任何事情。如果我们谈论“系统特性”,我想我们不理解同样的事情。如果我P/调用某个东西,这通常是“系统功能”,而使用第三方库则不是。-你能告诉我一种P/Invoke的方法来告诉Windows我的程序应该使用暗标题栏吗?嗯,Windows资源管理器当然不是UWP,但仍然有暗标题栏。因此,我假设有一个API。但是,微软可能在这里作弊。(我也很确定,Explorer不使用Windows样式=“没有”,或者它在Windows API中的等价物)@ MartiniBianco,但是Windows资源管理器是微软私有C++代码,它们可以在公共API后面做任何他们想做的事情。使用DWM P/Invokes和大量的工作,您可以实现类似的功能,但是,我不推荐使用它,并且我无法编写一些代码来说明我的意思,因为a)我不知道哪些函数具有DWM,b)它既不简单也不短。