using System; using System.Diagnostics.CodeAnalysis; using FluentAvalonia.UI.Controls; using FluentAvalonia.UI.Media.Animation; using StabilityMatrix.Avalonia.Models; using StabilityMatrix.Avalonia.ViewModels.Base; namespace StabilityMatrix.Avalonia.Services; public interface INavigationService<[SuppressMessage("ReSharper", "UnusedTypeParameter")] T> { event EventHandler? TypedNavigation; /// /// Set the frame to use for navigation. /// void SetFrame(Frame frame); /// /// Navigate to the view of the given view model type. /// void NavigateTo(NavigationTransitionInfo? transitionInfo = null, object? param = null) where TViewModel : ViewModelBase; /// /// Navigate to the view of the given view model type. /// void NavigateTo( Type viewModelType, NavigationTransitionInfo? transitionInfo = null, object? param = null ); /// /// Navigate to the view of the given view model. /// void NavigateTo(ViewModelBase viewModel, NavigationTransitionInfo? transitionInfo = null); bool GoBack(); bool CanGoBack { get; } object? CurrentPageDataContext { get; } }