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

WinUI3手动切换颜色主题:如何实现ComboBox主题选择的简化逻辑

WinUI3 主题选择 ComboBox 简洁实现方案

你可以直接借助WinUI3内置的Application.Current.RequestedTheme属性完成主题切换,无需复杂的额外框架或逻辑,以下是具体实现步骤:

1. 修正XAML拼写错误

先把ComboBox里的Defaut改成正确的Default:

<!--XAML CODE-->
<ComboBox x:Name="themeMode" SelectionChanged="Themes_SelectionChanged">
    <ComboBoxItem>Light</ComboBoxItem>
    <ComboBoxItem>Dark</ComboBoxItem>
    <ComboBoxItem>Default</ComboBoxItem>                    
</ComboBox>

2. 实现SelectionChanged事件逻辑

在对应页面的代码隐藏文件(如SettingsPage.xaml.cs)中添加以下处理代码:

private void Themes_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (themeMode.SelectedItem is ComboBoxItem selectedItem)
    {
        var themeName = selectedItem.Content.ToString();
        switch (themeName)
        {
            case "Light":
                Application.Current.RequestedTheme = ApplicationTheme.Light;
                break;
            case "Dark":
                Application.Current.RequestedTheme = ApplicationTheme.Dark;
                break;
            case "Default":
                Application.Current.RequestedTheme = ApplicationTheme.Default;
                break;
        }
    }
}

3. 初始化选中当前主题(可选)

如果希望打开设置页面时,ComboBox自动选中当前应用的主题,可以添加页面加载逻辑:

private void Page_Loaded(object sender, RoutedEventArgs e)
{
    switch (Application.Current.RequestedTheme)
    {
        case ApplicationTheme.Light:
            themeMode.SelectedIndex = 0;
            break;
        case ApplicationTheme.Dark:
            themeMode.SelectedIndex = 1;
            break;
        case ApplicationTheme.Default:
            themeMode.SelectedIndex = 2;
            break;
    }
}

同时给页面添加Loaded事件绑定:

<Page ... Loaded="Page_Loaded">

这个方案直接调用WinUI3原生的主题控制属性,代码简洁直观,完全满足基础的主题切换需求。

内容的提问来源于stack exchange,提问作者unsealed1051

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 02:51:04