inital
This commit is contained in:
55
FasdDesktopUi/Pages/CustomPopupBase.cs
Normal file
55
FasdDesktopUi/Pages/CustomPopupBase.cs
Normal file
@@ -0,0 +1,55 @@
|
||||
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() { }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user