public void NavigateBack <TResult>(ILifecycleViewModelWithResult <TResult> fromViewModel, ResultCode resultCode, TResult result) where TResult : Result { NavigationViewProvider.TryGetView(fromViewModel, out INavigationView <ILifecycleViewModelWithResult <TResult> > fromView); NavigateBack(fromView, resultCode, result, true); }
public void NavigateBack <TResult>(ILifecycleViewModelWithResult <TResult> fromViewModel, ResultCode resultCode, TResult result) where TResult : Result { var fromView = NavigationViewProvider.Get(fromViewModel); NavigateBack(fromView, resultCode, result, true); }
/// <summary> /// Gets an existing <see cref="INavigationView{TViewModel}"/> instance by <paramref name="viewModel"/> that can return a lifecycle-aware view model result. /// </summary> /// <typeparam name="TResult">The type of the view model result.</typeparam> /// <param name="viewModel">The view model that is used to get its view.</param> /// <param name="view">The navigation view corresponding to the provided model.</param> /// <returns><see langword="true"/> if the view still exists and has not yet been garbage collected or disposed; otherwise, <see langword="false"/>.</returns> /// <exception cref="ArgumentNullException"><paramref name="viewModel"/> is <see langword="null"/>.</exception> public static bool TryGetView <TResult>(ILifecycleViewModelWithResult <TResult> viewModel, [MaybeNullWhen(returnValue: false)] out INavigationView <ILifecycleViewModelWithResult <TResult> > view) where TResult : Result { if (viewModel == null) { throw new ArgumentNullException(nameof(viewModel)); } return(ViewRegistry.TryGetView(viewModel, out view)); }
/// <summary> /// Returns an existing <see cref="INavigationView{TViewModel}"/> instance by <paramref name="viewModel"/> that can return a lifecycle-aware view model result. /// </summary> /// <typeparam name="TResult">The type of the view model result.</typeparam> /// <param name="viewModel">The view model that is used to get its view.</param> /// <returns>The navigation view instance.</returns> /// <exception cref="ArgumentNullException"><paramref name="viewModel"/> is <see langword="null"/>.</exception> /// <exception cref="InvalidOperationException">The view instance is missing for the provided <paramref name="viewModel"/>.</exception> public static INavigationView <ILifecycleViewModelWithResult <TResult> > Get <TResult>(ILifecycleViewModelWithResult <TResult> viewModel) where TResult : Result { if (viewModel == null) { throw new ArgumentNullException(nameof(viewModel)); } return(ViewCache.Get <INavigationView <ILifecycleViewModelWithResult <TResult> >, ILifecycleViewModelWithResult <TResult> >(viewModel)); }
/// <summary> /// Returns an existing <see cref="INavigationView{TViewModel}"/> instance by <paramref name="viewModel"/> that can return a lifecycle-aware view model result. /// </summary> /// <typeparam name="TResult">The type of the view model result.</typeparam> /// <param name="viewModel">The view model that is used to get its view.</param> /// <returns>The navigation view instance.</returns> /// <exception cref="ArgumentNullException"><paramref name="viewModel"/> is <see langword="null"/>.</exception> /// <exception cref="InvalidOperationException">The view instance is missing for the provided <paramref name="viewModel"/>.</exception> public static INavigationView <ILifecycleViewModelWithResult <TResult> > Get <TResult>(ILifecycleViewModelWithResult <TResult> viewModel) where TResult : Result { if (viewModel == null) { throw new ArgumentNullException(nameof(viewModel)); } if (!ViewRegistry.TryGetView <ILifecycleViewModelWithResult <TResult>, INavigationView <ILifecycleViewModelWithResult <TResult> > >(viewModel, out var view)) { throw new InvalidOperationException( $"The view instance is missing for the provided '{TypeFormatter.FormatName(viewModel.GetType())}' view model."); } return(view); }