From 39e098221cb5e6c8ed22a0db2b8cf0b656c3417b Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Sat, 2 May 2026 12:36:36 +0800 Subject: [PATCH] =?UTF-8?q?Improve:=E8=AE=BE=E7=BD=AE=E5=90=AF=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SettingsViews/SettingsWindow.xaml.cs | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/Ink Canvas/Windows/SettingsViews/SettingsWindow.xaml.cs b/Ink Canvas/Windows/SettingsViews/SettingsWindow.xaml.cs index 828cfce0..9076ff76 100644 --- a/Ink Canvas/Windows/SettingsViews/SettingsWindow.xaml.cs +++ b/Ink Canvas/Windows/SettingsViews/SettingsWindow.xaml.cs @@ -78,6 +78,7 @@ namespace Ink_Canvas.Windows.SettingsViews RegisterDpiChangedListener(); LoadPluginSettingsPages(); UpdateUpdateBadgeVisibility(); + _ = PreloadAllPagesAsync(); }; this.Closed += (sender, e) => @@ -690,6 +691,42 @@ namespace Ink_Canvas.Windows.SettingsViews return NavigationViewControl; } + private async System.Threading.Tasks.Task PreloadAllPagesAsync() + { + try + { + var tags = _pageTypes.Keys.ToList(); + foreach (var tag in tags) + { + if (_pages.ContainsKey(tag)) + continue; + if (!_pageTypes.TryGetValue(tag, out var type)) + continue; + if (type == typeof(PluginSettingsPage)) + continue; + + await Dispatcher.InvokeAsync(() => + { + try + { + if (_pages.ContainsKey(tag)) + return; + var page = Activator.CreateInstance(type); + _pages[tag] = page; + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine($"预加载设置页面 {tag} 失败: {ex.Message}"); + } + }, System.Windows.Threading.DispatcherPriority.Background); + } + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine($"异步预加载设置页面时出错: {ex.Message}"); + } + } + public void UpdateUpdateBadgeVisibility() { try