Files
ShrlAlgoToolkit/WPFluent/Appearance/WindowBackgroundManager.cs

70 lines
1.9 KiB
C#
Raw Normal View History

2025-05-05 17:04:06 +08:00
using WPFluent.Controls;
using WPFluent.Interop;
namespace WPFluent.Appearance;
/// <summary>
2025-04-24 20:56:44 +08:00
/// 便于管理窗口背景。
/// </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>
2025-05-05 17:04:06 +08:00
public static void UpdateBackground(Window? window, ThemeType applicationTheme, WindowBackdropType backdrop)
{
2025-04-24 20:56:44 +08:00
if (window is null)
{
return;
}
2025-04-24 20:56:44 +08:00
//_ = WindowBackdrop.RemoveBackdrop(window);
2025-05-05 17:04:06 +08:00
if (applicationTheme == ThemeType.Unknow)
{
backdrop = WindowBackdropType.None;
}
2025-05-05 17:04:06 +08:00
if (backdrop is not WindowBackdropType.None)
{
_ = WindowBackdrop.RemoveBackground(window);
}
2025-04-24 20:56:44 +08:00
//_ = WindowBackdrop.ApplyBackdrop(window, backdrop);
2025-05-05 17:04:06 +08:00
if (applicationTheme is ThemeType.Dark)
{
2025-04-24 20:56:44 +08:00
//ApplyDarkThemeToWindow(window);
}
else
{
2025-04-24 20:56:44 +08:00
//RemoveDarkThemeFromWindow(window);
}
2025-04-24 20:56:44 +08:00
//_ = WindowBackdrop.RemoveTitlebarBackground(window);
2025-04-24 20:56:44 +08:00
foreach (object? subWindow in window.OwnedWindows)
{
2025-04-24 20:56:44 +08:00
if (subWindow is Window windowSubWindow)
{
2025-04-24 20:56:44 +08:00
//_ = WindowBackdrop.ApplyBackdrop(windowSubWindow, backdrop);
2025-05-05 17:04:06 +08:00
if (applicationTheme is ThemeType.Dark)
{
2025-04-24 20:56:44 +08:00
//ApplyDarkThemeToWindow(windowSubWindow);
}
else
{
2025-04-24 20:56:44 +08:00
//RemoveDarkThemeFromWindow(windowSubWindow);
}
2025-04-24 20:56:44 +08:00
//_ = WindowBackdrop.RemoveTitlebarBackground(window);
}
}
}
}