You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 02:49:53