![](/img/trans.png)
[英]Is there any way to make a WPF app respect the system choice of dark/light theme in Windows 10?
[英]How can I get whether Windows 10 Anniversary Update or later is using its light or dark theme in a WPF app?
我已经编写了一个WPF桌面应用程序,我希望使用Desktop Bridge将其放入Windows应用商店。 该应用程序能够在明暗模式下呈现自己,并使用强调色。 但是,要成为Windows 10的好公民,我希望从操作系统获取该信息,如果可能的话。
我目前的理解是,我可以从这里获得强调色:
var accentBrush = SystemParameters.WindowGlassBrush;
如何判断Windows 10是处于浅色还是黑暗主题? 另外,您建议使用哪种方法来通知用户对亮/暗或强调颜色的偏好变化?
每当Windows 10周年更新或更高版本中的此亮/暗模式设置更改时,都会更新注册表值。 关键是:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize
值的名称是:
AppsUseLightTheme
如果是1,那么主题是Light。 如果是0,则主题为黑暗。 如果我找不到密钥或值,我会假设Light(就像以前版本的Windows一样)。
就我而言,林德西值得赞扬。 没有这个评论,我没有想到要进行调查。
一些简单的代码可以为普通WPF应用程序中的轻量模式提供一个bool,而不是UWP。 从未测试过高对比度模式。 如果该值不存在或出现问题,则假定为亮模式。
bool is_light_mode = true;
try
{
var v = Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize", "AppsUseLightTheme", "1");
if (v != null && v.ToString() == "0")
is_light_mode = false;
}
catch { }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.