Wrap FluentAvalonia controls within same named classes allowing us to declare the xmlns namespace in our assembly

This commit is contained in:
Daniel Clark
2022-12-10 15:52:58 +00:00
parent 3d9a7e4438
commit 4f243eba2e
94 changed files with 121 additions and 85 deletions
@@ -0,0 +1,38 @@
using Avalonia.Controls;
using Avalonia.Controls.Primitives;
using FluentAvalonia.UI.Controls;
using Mediator;
namespace Toolkit.Foundation.Avalonia
{
public class NavigateBackHandler : IRequestHandler<NavigateBack>
{
private readonly INavigationRouteDescriptorCollection descriptors;
public NavigateBackHandler(INavigationRouteDescriptorCollection descriptors)
{
this.descriptors = descriptors;
}
public ValueTask<Unit> Handle(NavigateBack request, CancellationToken cancellationToken)
{
if (descriptors.FirstOrDefault(x => request.Route is string { } name && name == x.Name) is NavigationRouteDescriptor descriptor)
{
if (descriptor.Route is ContentControl { Content: TemplatedControl content })
{
if (content.DataContext is IDisposable disposable)
{
disposable.Dispose();
}
}
if (descriptor.Route is Frame frame)
{
frame.GoBack();
}
}
return default;
}
}
}