Files
Shrlalgo.RvKits/WPFluent/Appearance/WindowBackgroundManager.cs
2025-05-05 17:04:06 +08:00

70 lines
1.9 KiB
C#

using WPFluent.Controls;
using WPFluent.Interop;
namespace WPFluent.Appearance;
/// <summary>
/// 便于管理窗口背景。
/// </summary>
/// <example>
/// <code lang="csharp"> /// WindowBackgroundManager.UpdateBackground( /// observedWindow.RootVisual, ///
/// currentApplicationTheme, /// observedWindow.Backdrop /// ); ///</code>
/// </example>
public static class WindowBackgroundManager
{
/// <summary>
/// Forces change to application background. Required if custom background effect was previously applied.
/// </summary>
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);
}
}
}
}