using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; namespace Hyperbar.UI.Windows; public class FrameHandler : INavigationHandler { public Task Handle(Navigate args, CancellationToken cancellationToken = default) { return Task.CompletedTask; } } public class WindowHandler : INavigationHandler { public Task Handle(Navigate args, CancellationToken cancellationToken) { if (args.View is Window window) { if (window.Content is FrameworkElement content) { void HandleClosed(object sender, WindowEventArgs args) { window.Closed -= HandleClosed; if (content.DataContext is IObservableViewModel observableViewModel) { observableViewModel.Dispose(); } } //ViewModelBinder.Bind(args.ViewModel, content); window.Closed += HandleClosed; } window.Activate(); } return Task.CompletedTask; } }