SuperAPI AI 工具集

maui-theming

前端与建站

查看项目

更新于 10-16 00:05

技能介绍

用途:为 .NET MAUI 应用添加浅色/深色模式支持、自定义品牌主题和运行时主题切换,适用于 .NET 8 或更高版本的项目。

主要能力:AppThemeBinding 按系统主题选择 Light/Dark 值,适合只有两种主题的简单场景;ResourceDictionary 文件(键名一致)配合 DynamicResource 绑定可支持多主题、品牌主题和用户自选主题;Application.Current.RequestedTheme 读取当前系统主题,RequestedThemeChanged 事件响应变化;UserAppTheme 可强制指定主题,设为 AppTheme.Unspecified 则跟随系统;Preferences.Set/Get 持久化用户选择并在启动时应用。

使用方式:将颜色定义集中在 App.xaml 的 Application.Resources 中,用隐式 Style 绑定 AppThemeBinding,避免在每个元素上散写字面量颜色。需要运行时切换主题时,用 DynamicResource 引用键(StaticResource 只在加载时解析一次,切换后不更新),切换时只从 MergedDictionaries 移除旧主题再添加新主题。C# 中可用 SetAppThemeColor(Color 属性)和泛型 SetAppTheme<T>(任意可绑定属性)。

限制与注意:绝不要调用 MergedDictionaries.Clear() 切换主题,否则会连带移除模板的 Colors.xaml 与 Styles.xaml,导致隐式样式全部失效。Android 需在 MainActivity 声明 ConfigChanges.UiMode,否则主题变化会重启 Activity、丢失导航状态。各主题字典的 x:Key 必须一致,缺键会静默回退。CSS 主题无法运行时动态切换。硬编码颜色会破坏主题适配。AppThemeBinding 仅支持两种主题。

平台最低版本:iOS 13+、Android 10+(API 29)、macOS Catalyst 10.15+、Windows 10+。