我有一个WPF应用程序。我阅读(和观察)注册表项HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize\AppsUseLightTheme
,看看(和何时)黑暗模式是活动的或不活动的。我比使用WPF主题,使应用程序黑暗或光明。
不管怎么说,我没有找到改变标题栏的方法。一定有什么方法,因为Windows资源管理器在黑暗模式下也会得到一个黑暗的标题栏。我不知道其他应用程序有这个。
我知道CMD窗口在黑暗模式下也有一个黑色的标题栏,但我认为这是不同的,因为控制台窗口是特殊的。
那么,如何告诉Windows我的应用程序支持或处于暗模式,从而使标题栏变黑呢?
3条答案
按热度按时间cnjp1d6j1#
WPF有SystemColors静态类,包含所有主题颜色(或多或少),请在DynamicResource中使用它。
如果您想要更多的工作(但更多的控制),请找到“AccentColors P/Invoke”。
如果你想改变“标题栏”的颜色,你要寻找窗口的“Chrome”。
https://learn.microsoft.com/en-us/dotnet/api/system.windows.shell.windowchrome?view=netframework-4.8
khbbv19g2#
你的WPF应用程序中不能有暗模式标题栏。支持暗模式的标题栏适用于UWP应用程序。对于你的WPF应用程序,你必须使用**WindowStyle=“None”**并创建自己的标题栏。
这是一个有趣的阅读有关这一点:https://engy.us/blog/2018/10/20/dark-theme-in-wpf/
5f0d552i3#
现在有一种更好的方法来根据主题设置窗口标题栏颜色:将
DwmSetWindowAttribute
Windows API方法与DWMWA_USE_IMMERSIVE_DARK_MODE
常量结合使用。它的描述如下: