using Avalonia.Controls.Primitives; using FluentAvalonia.UI.Controls; using FluentAvalonia.UI.Navigation; using Toolkit.Foundation.Avalonia; namespace Kromek.Framework.Avalonia { public class FrameHandler : NavigationRouteHandler { public override async void Receive(NavigationRouteRequest message) { message.Target.NavigationPageFactory = new NavigationPageFactory(); TaskCompletionSource completionSource = new(); if (message.Template is TemplatedControl content) { void HandleNavigated(object sender, NavigationEventArgs args) { message.Target.Navigated -= HandleNavigated; if (message.Target.Content is TemplatedControl control) { control.DataContext = message.Data; completionSource.SetResult(true); } } message.Target.Navigated += HandleNavigated; message.Target.NavigateFromObject(content); } bool result = await completionSource.Task; message.Reply(result); } } }