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