using WPFluent.Controls; using WPFluent.Interop; namespace WPFluent.Appearance; /// /// 便于管理窗口背景。 /// /// /// /// WindowBackgroundManager.UpdateBackground( /// observedWindow.RootVisual, /// /// currentApplicationTheme, /// observedWindow.Backdrop /// ); /// /// public static class WindowBackgroundManager { /// /// Forces change to application background. Required if custom background effect was previously applied. /// public static void UpdateBackground(Window? window, ThemeType applicationTheme, WindowBackdropType backdrop) { if (window is null) { return; } //_ = WindowBackdrop.RemoveBackdrop(window); if (applicationTheme == ThemeType.Unknow) { backdrop = WindowBackdropType.None; } if (backdrop is not WindowBackdropType.None) { _ = WindowBackdrop.RemoveBackground(window); } //_ = WindowBackdrop.ApplyBackdrop(window, backdrop); if (applicationTheme is ThemeType.Dark) { //ApplyDarkThemeToWindow(window); } else { //RemoveDarkThemeFromWindow(window); } //_ = WindowBackdrop.RemoveTitlebarBackground(window); foreach (object? subWindow in window.OwnedWindows) { if (subWindow is Window windowSubWindow) { //_ = WindowBackdrop.ApplyBackdrop(windowSubWindow, backdrop); if (applicationTheme is ThemeType.Dark) { //ApplyDarkThemeToWindow(windowSubWindow); } else { //RemoveDarkThemeFromWindow(windowSubWindow); } //_ = WindowBackdrop.RemoveTitlebarBackground(window); } } } }