Просмотр исходного кода

修复主题切换后控件不更新 - 延迟重绘确保资源字典刷新

磊 曹 6 дней назад
Родитель
Сommit
95bc8facce
1 измененных файлов с 9 добавлено и 5 удалено
  1. 9 5
      src/YZWater.Avalonia/App.axaml.cs

+ 9 - 5
src/YZWater.Avalonia/App.axaml.cs

@@ -2,6 +2,7 @@ using Avalonia;
 using Avalonia.Controls.ApplicationLifetimes;
 using Avalonia.Markup.Xaml;
 using Avalonia.Markup.Xaml.Styling;
+using Avalonia.Threading;
 using YZWater.Avalonia.Views;
 using YZWater.Core.Services;
 
@@ -49,13 +50,16 @@ public partial class App : Application
 
         resources[0] = ThemeService.Instance.IsDarkTheme ? _darkTheme : _lightTheme;
 
-        // 强制所有窗口重绘
-        if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
+        // 延迟重绘,确保资源字典更新完成
+        Dispatcher.UIThread.Post(() =>
         {
-            foreach (var window in desktop.Windows)
+            if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
             {
-                window.InvalidateVisual();
+                foreach (var window in desktop.Windows)
+                {
+                    window.InvalidateVisual();
+                }
             }
-        }
+        }, DispatcherPriority.Render);
     }
 }