繁体   English   中英

如何在Windows 10周年更新或更高版本中使用WPF应用程序中的浅色或深色主题?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM