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
相关产品推荐
相关产品推荐

