Files
C4IT-F4SD-Client/FasdDesktopUi/Pages/CustomPopupBase.cs
2025-11-11 11:03:42 +01:00

56 lines
1.5 KiB
C#

using C4IT.Logging;
using FasdDesktopUi.Basics.Models;
using System;
using System.Linq;
using System.Windows;
namespace FasdDesktopUi.Pages
{
public class CustomPopupBase : Window, IDisposable, IBlurInvoker
{
public CustomPopupBase()
{
this.IsVisibleChanged += SettingsPageBase_IsVisibleChanged;
}
private void SettingsPageBase_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
try
{
if (!(sender is CustomPopupBase senderPage))
return;
if (senderPage.Visibility != Visibility.Visible)
return;
foreach (var window in Application.Current.Windows.OfType<CustomPopupBase>().Where(w => w.IsVisible && w != sender).ToArray())
{
window.Hide();
window.Dispose();
}
}
catch (Exception ex)
{
cLogManager.LogException(ex);
}
}
public void BlurInvoker_IsActiveChanged(object sender, DependencyPropertyChangedEventArgs e)
{
try
{
BlurInvoker.InvokeVisibilityChanged(this, new EventArgs());
}
catch (Exception E)
{
cLogManager.LogException(E);
}
}
public bool BlurInvoker_IsActive => IsVisible;
public virtual void Dispose() { }
}
}