This commit is contained in:
Dan Clark
2024-11-23 21:41:59 +00:00
parent e809c22cb7
commit 911ed375b4
17 changed files with 311 additions and 18 deletions
+2 -1
View File
@@ -3,7 +3,8 @@ using System.Diagnostics.CodeAnalysis;
namespace Toolkit.WinUI;
public interface IWindowRegistry
public interface IWindowRegistry :
IDisposable
{
void Add(Window window);
+17 -1
View File
@@ -1,9 +1,11 @@
using Microsoft.UI.Xaml;
using System.Diagnostics.CodeAnalysis;
using System.Reactive.Disposables;
using Toolkit.Foundation;
namespace Toolkit.WinUI;
public class WindowRegistry :
public class WindowRegistry(IDisposer disposer) :
IWindowRegistry
{
private readonly List<Window> windows = [];
@@ -19,13 +21,27 @@ public class WindowRegistry :
}
windows.Add(window);
disposer.Add(this, Disposable.Create(() =>
{
windows.Remove(window);
window.Close();
}));
window.Closed += OnWindowClosed;
}
}
public void Dispose()
{
disposer.Dispose(this);
GC.SuppressFinalize(this);
}
public bool TryGet<TWindow>([DisallowNull] out TWindow? window)
where TWindow : Window
{
window = windows.OfType<TWindow>().FirstOrDefault() ?? null;
return window is not null;
}