如何检测WinUI应用当前使用的深色或浅色主题?
检测WinUI应用当前使用的主题
下面几种方法可以帮你获取WinUI应用当前实际生效的主题(深色/浅色):
方法1:获取元素实际生效的主题
直接访问控件或页面的ActualTheme属性,它会直接返回当前实际呈现的ElementTheme.Dark或ElementTheme.Light,不管用户设置的是手动选择还是默认跟随系统:
// 获取当前页面的实际主题 ElementTheme currentTheme = this.ActualTheme; if (currentTheme == ElementTheme.Dark) { // 执行深色主题相关逻辑 } else { // 执行浅色主题相关逻辑 }
方法2:结合应用全局设置与实际主题
如果想先看用户的全局主题设置(深色/浅色/默认),再获取实际生效的主题,可以用Application.Current.RequestedTheme:
ApplicationTheme requestedTheme = Application.Current.RequestedTheme; switch (requestedTheme) { case ApplicationTheme.Dark: // 用户手动设置了深色主题 break; case ApplicationTheme.Light: // 用户手动设置了浅色主题 break; case ApplicationTheme.Default: // 用户设置为跟随系统,需要获取实际生效的主题 var rootElement = Window.Current.Content as FrameworkElement; if (rootElement != null) { ElementTheme actualTheme = rootElement.ActualTheme; // 这里处理实际主题逻辑 } break; }
方法3:监听主题变化事件
如果需要在主题切换时实时响应,可以订阅ActualThemeChanged事件:
// 在页面构造函数或Loaded事件中添加订阅 this.ActualThemeChanged += Page_ActualThemeChanged; // 事件处理方法 private void Page_ActualThemeChanged(FrameworkElement sender, object args) { ElementTheme newTheme = sender.ActualTheme; // 主题切换后的逻辑处理 }
内容的提问来源于stack exchange,提问作者Slion
相关产品推荐
相关产品推荐

