public void NavigateTo(string pageKey, HistoryBehavior historyBehavior, PreAppearingBehavior preAppearingBehavior) => NavigateTo(pageKey, null, historyBehavior, preAppearingBehavior);
public void NavigateTo(string pageKey, object parameter, HistoryBehavior historyBehavior, PreAppearingBehavior preAppearingBehavior = PreAppearingBehavior.Default) { Type pageType; if (pages.TryGetValue(pageKey, out pageType)) { var displayPage = (Page)Activator.CreateInstance(pageType, args: parameter); CurrentPageKey = pageKey; ((IContentPageBase)displayPage)?.OnPreAppearing(preAppearingBehavior == PreAppearingBehavior.ClearData); if (historyBehavior == HistoryBehavior.ClearHistory) { displayPage.SetNavigationArgs(parameter); ((NavigationPage)MainPage).CurrentPage.Navigation.InsertPageBefore(displayPage, ((NavigationPage)MainPage).RootPage); MainPage.Navigation.PopToRootAsync(); } else { MainPage.Navigation.PushAsync(displayPage, parameter, animated: true); } } else { throw new ArgumentException( $"No such page: {pageKey}. Did you forget to call NavigationService.Configure?", nameof(pageKey)); } }
public void NavigateModalTo(string pageKey, object parameter, bool useNavigation = false, PreAppearingBehavior preAppearingBehavior = PreAppearingBehavior.Default) { Type pageType; if (pages.TryGetValue(pageKey, out pageType)) { var displayPage = (Page)Activator.CreateInstance(pageType, args: parameter); ((IContentPageBase)displayPage)?.OnPreAppearing(preAppearingBehavior == PreAppearingBehavior.ClearData); if (useNavigation) { var navPage = new AppNavigationPage(displayPage); displayPage.SetNavigationArgs(parameter); MainPage.Navigation.PushModalAsync(navPage, parameter, animated: true); } else { MainPage.Navigation.PushModalAsync(displayPage, parameter, animated: true); } } else { throw new ArgumentException( $"No such page: {pageKey}. Did you forget to call NavigationService.Configure?", nameof(pageKey)); } }