MAUI 暗黑模式切换核心是利用 AppTheme 和系统主题监听,配合资源字典动态更新 UI 颜色;需在 MauiProgram.cs 启用主题支持,在 Colors.xaml 定义亮/暗双套资源,重写 OnAppThemeChanged 刷新 MergedDictionaries,并可手动设置 UserAppTheme 覆盖系统偏好。
MAUI 实现暗黑模式切换,核心是利用 AppTheme 和系统级主题监听机制,配合资源字典动态更新 UI 颜色与样式。不依赖第三方库,官方已原生支持。
在 MauiProgram.cs 中启用主题能力:
UseMauiApp() 前已配置主题支持(MAUI 7+ 默认开启)在 Resources/Styles/Colors.xaml 中按主题分组声明:
x:Key 统一命名(如 `PrimaryColor`, `BackgroundColor`),不同 ResourceDictionary 下对应不同值ResourceDictionary,并用 Source 引入或直接内联#FFFFFF #000000 #121212 #FFFFFF
在 App.xaml
.cs 中监听主题变更:
OnAppThemeChanged 方法(继承自 Application)Resources.MergedDictionaries.Clear(); Resources.MergedDictionaries.Add(new YourThemeDictionary());
Application.Current.RequestedTheme 属性变化事件(需自行实现 INotifyPropertyChanged 监听)在页面中添加切换按钮,控制 AppTheme:
Application.Current.UserAppTheme = AppTheme.Dark; 或 AppTheme.Light;
OnAppThemeChanged
Preferences,下次启动时读取并设置 UserAppTheme
Preferences.Set("app_theme", "Dark");
基本上就这些。MAUI 的暗黑模式切换不复杂但容易忽略资源字典的动态替换时机,重点是让颜色资源 Key 一致、监听到位、切换后及时刷新资源树。