diff --git a/Ink Canvas/MainWindow_cs/MW_AutoTheme.cs b/Ink Canvas/MainWindow_cs/MW_AutoTheme.cs
index dc93e2e2..c7755caf 100644
--- a/Ink Canvas/MainWindow_cs/MW_AutoTheme.cs
+++ b/Ink Canvas/MainWindow_cs/MW_AutoTheme.cs
@@ -74,6 +74,9 @@ namespace Ink_Canvas
// 强制刷新UI
window.InvalidateVisual();
+
+ // 通知其他窗口刷新主题
+ RefreshOtherWindowsTheme();
}
else if (theme == "Dark")
{
@@ -115,6 +118,9 @@ namespace Ink_Canvas
// 强制刷新UI
window.InvalidateVisual();
+
+ // 通知其他窗口刷新主题
+ RefreshOtherWindowsTheme();
}
}
@@ -485,5 +491,30 @@ namespace Ink_Canvas
// 忽略异常
}
}
+
+ ///
+ /// 刷新其他窗口的主题
+ ///
+ private void RefreshOtherWindowsTheme()
+ {
+ try
+ {
+ // 刷新所有打开的计时器窗口
+ foreach (Window window in Application.Current.Windows)
+ {
+ if (window is CountdownTimerWindow timerWindow)
+ {
+ timerWindow.RefreshTheme();
+ }
+ else if (window is RandWindow randWindow)
+ {
+ randWindow.RefreshTheme();
+ }
+ }
+ }
+ catch (Exception)
+ {
+ }
+ }
}
}
\ No newline at end of file
diff --git a/Ink Canvas/Windows/CountdownTimerWindow.xaml.cs b/Ink Canvas/Windows/CountdownTimerWindow.xaml.cs
index 4f662605..545ea002 100644
--- a/Ink Canvas/Windows/CountdownTimerWindow.xaml.cs
+++ b/Ink Canvas/Windows/CountdownTimerWindow.xaml.cs
@@ -430,6 +430,25 @@ namespace Ink_Canvas
InitializeUI();
}
+ ///
+ /// 刷新主题,当主窗口主题切换时调用
+ ///
+ public void RefreshTheme()
+ {
+ try
+ {
+ // 重新应用主题
+ ApplyTheme();
+
+ // 强制刷新UI
+ InvalidateVisual();
+ }
+ catch (Exception ex)
+ {
+ LogHelper.WriteLogToFile($"刷新计时器窗口主题出错: {ex.Message}", LogHelper.LogType.Error);
+ }
+ }
+
private void UpdateButtonTexts()
{
if (useLegacyUI)
diff --git a/Ink Canvas/Windows/RandWindow.xaml.cs b/Ink Canvas/Windows/RandWindow.xaml.cs
index f4b670aa..fc16446c 100644
--- a/Ink Canvas/Windows/RandWindow.xaml.cs
+++ b/Ink Canvas/Windows/RandWindow.xaml.cs
@@ -478,6 +478,25 @@ namespace Ink_Canvas
// 这里可以添加必要的清理代码
}
+ ///
+ /// 刷新主题,当主窗口主题切换时调用
+ ///
+ public void RefreshTheme()
+ {
+ try
+ {
+ // 重新应用主题
+ ApplyTheme(MainWindow.Settings);
+
+ // 强制刷新UI
+ InvalidateVisual();
+ }
+ catch (Exception ex)
+ {
+ LogHelper.WriteLogToFile($"刷新点名窗口主题出错: {ex.Message}", LogHelper.LogType.Error);
+ }
+ }
+
#region Win32 API 声明
[DllImport("user32.dll")]
private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);