using Avalonia.Media; namespace YZWater.Avalonia.Controls; /// /// 主题资源辅助方法 - 直接缓存当前主题画刷 /// internal static class ThemeHelper { public static event Action? ThemeChanged; public static void NotifyThemeChanged() => ThemeChanged?.Invoke(); // ─── 当前主题画刷缓存 ─── public static IBrush AppBg { get; private set; } = new SolidColorBrush(Color.Parse("#0A0E14")); public static IBrush SurfaceBg { get; private set; } = new SolidColorBrush(Color.Parse("#111820")); public static IBrush PanelBg { get; private set; } = new SolidColorBrush(Color.Parse("#0D1117")); public static IBrush Border { get; private set; } = new SolidColorBrush(Color.Parse("#1C2333")); public static IBrush TextPrimary { get; private set; } = new SolidColorBrush(Color.Parse("#E6EDF3")); public static IBrush TextSecondary { get; private set; } = new SolidColorBrush(Color.Parse("#9CA3AF")); public static IBrush TextTertiary { get; private set; } = new SolidColorBrush(Color.Parse("#6B7280")); public static IBrush TextDisabled { get; private set; } = new SolidColorBrush(Color.Parse("#4B5563")); public static IBrush Success { get; private set; } = new SolidColorBrush(Color.Parse("#00897B")); public static IBrush Warning { get; private set; } = new SolidColorBrush(Color.Parse("#F59E0B")); public static IBrush Danger { get; private set; } = new SolidColorBrush(Color.Parse("#EF4444")); public static IBrush Info { get; private set; } = new SolidColorBrush(Color.Parse("#3B82F6")); public static IBrush HeaderBg { get; private set; } = new SolidColorBrush(Color.Parse("#111820")); public static IBrush HeaderText { get; private set; } = new SolidColorBrush(Color.Parse("#E6EDF3")); public static IBrush HeaderSubtext { get; private set; } = new SolidColorBrush(Color.Parse("#9CA3AF")); public static IBrush NavBg { get; private set; } = new SolidColorBrush(Color.Parse("#111820")); /// /// 设置当前主题(由 App.axaml.cs 调用) /// public static void SetTheme(bool isDark) { Console.WriteLine($"[ThemeHelper] SetTheme: isDark={isDark}, current HeaderBg={((SolidColorBrush)HeaderBg).Color}"); if (isDark) { AppBg = new SolidColorBrush(Color.Parse("#0A0E14")); SurfaceBg = new SolidColorBrush(Color.Parse("#111820")); PanelBg = new SolidColorBrush(Color.Parse("#0D1117")); Border = new SolidColorBrush(Color.Parse("#1C2333")); TextPrimary = new SolidColorBrush(Color.Parse("#E6EDF3")); TextSecondary = new SolidColorBrush(Color.Parse("#9CA3AF")); TextTertiary = new SolidColorBrush(Color.Parse("#6B7280")); TextDisabled = new SolidColorBrush(Color.Parse("#4B5563")); Success = new SolidColorBrush(Color.Parse("#00897B")); Warning = new SolidColorBrush(Color.Parse("#F59E0B")); Danger = new SolidColorBrush(Color.Parse("#EF4444")); Info = new SolidColorBrush(Color.Parse("#3B82F6")); HeaderBg = new SolidColorBrush(Color.Parse("#111820")); HeaderText = new SolidColorBrush(Color.Parse("#E6EDF3")); HeaderSubtext = new SolidColorBrush(Color.Parse("#9CA3AF")); NavBg = new SolidColorBrush(Color.Parse("#111820")); } else { AppBg = new SolidColorBrush(Color.Parse("#E5E7EB")); SurfaceBg = new SolidColorBrush(Color.Parse("#F3F4F6")); PanelBg = new SolidColorBrush(Color.Parse("#FFFFFF")); Border = new SolidColorBrush(Color.Parse("#9CA3AF")); TextPrimary = new SolidColorBrush(Color.Parse("#111827")); TextSecondary = new SolidColorBrush(Color.Parse("#4B5563")); TextTertiary = new SolidColorBrush(Color.Parse("#6B7280")); TextDisabled = new SolidColorBrush(Color.Parse("#9CA3AF")); Success = new SolidColorBrush(Color.Parse("#047857")); Warning = new SolidColorBrush(Color.Parse("#B45309")); Danger = new SolidColorBrush(Color.Parse("#B91C1C")); Info = new SolidColorBrush(Color.Parse("#1D4ED8")); HeaderBg = new SolidColorBrush(Color.Parse("#1F2937")); HeaderText = new SolidColorBrush(Color.Parse("#F9FAFB")); HeaderSubtext = new SolidColorBrush(Color.Parse("#9CA3AF")); NavBg = new SolidColorBrush(Color.Parse("#F9FAFB")); } ThemeChanged?.Invoke(); } }