我如何获得Windows 10 Anniversary Update或更高版本在WPF应用中使用的是亮还是暗的主题?

Dan*_*nry 4 c# wpf windows-10

我编写了一个WPF桌面应用程序,我想使用Desktop Bridge将其放置在Windows应用商店中。该应用程序能够以亮和暗模式呈现自己,并使用强调色。但是,要成为Windows 10的好公民,我想尽可能从OS中获取该信息。

我目前的理解是,我可以从这里获得重点色:

var accentBrush = SystemParameters.WindowGlassBrush;
Run Code Online (Sandbox Code Playgroud)

如何确定Windows 10是亮还是暗主题?另外,您建议通过哪种方法在用户偏爱浅色/深色或强调色时收到通知?

Dan*_*nry 7

每当Windows 10周年更新或更高版本中的此亮/暗模式设置更改时,都会更新一个注册表值。关键是:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize
Run Code Online (Sandbox Code Playgroud)

值的名称是:

AppsUseLightTheme
Run Code Online (Sandbox Code Playgroud)

如果为1,则主题为Light。如果为0,则主题为“黑暗”。如果找不到键或值,我将假设使用Light(与Windows的早期版本一样)。

就我而言,lindexi的答案值得称赞。没有该评论,我没有想到要进行调查。