public Task Navigate <TPage, TParameter>(TParameter parameter, PagePresentationEnum presentationEnum = PagePresentationEnum.AddToStackNavigation) where TPage : IPage <IViewModel> { var page = AppContainer.Container.Resolve <TPage>(); if (page.ViewModel is IParameterViewModel <TParameter> parameterViewModel) { parameterViewModel.SetParameter(parameter); } return(Navigate(page, presentationEnum)); }
private Task Navigate(IPage <IViewModel> page, PagePresentationEnum presentation) { var xamFormsPage = page as Page; if (xamFormsPage == null) { throw new Exception($"page '{page}' is not of type {nameof(Page)}"); } switch (presentation) { case PagePresentationEnum.AddToStackNavigation: return(NavigateOnCurrentNavigationPage(xamFormsPage)); case PagePresentationEnum.NewStackNavigation: return(NavigateNewNavigationPage(xamFormsPage)); case PagePresentationEnum.NoStackNavigation: return(NavigateNonNavigationPage(xamFormsPage)); default: throw new Exception($"Unsupported presentation type '{presentation}' not implemented in {nameof(NavigationService)}"); } }
public Task Navigate <TPage>(PagePresentationEnum pagePresentation = PagePresentationEnum.AddToStackNavigation) where TPage : IPage <IViewModel> { var page = AppContainer.Container.Resolve <TPage>(); return(Navigate(page, pagePresentation)); }