/// <inheritdoc /> /// <summary> /// remove page inside navigation stack /// </summary> /// <param name="name"></param> public void RemovePage(string name) { if (string.IsNullOrEmpty(name)) { #if DEBUG || DB_SMHOME throw new ArgumentNullException(nameof(name)); #else return; #endif } var pageName = _namingConventions.GetViewName(name); var page = _lazyNavigation.Value.NavigationStack .FirstOrDefault(pg => pg.GetType().Name == pageName); if (page != null) { _lazyNavigation.Value.RemovePage(page); } }
public GojekBasePageView ResolvePage <T>(string name, NavigationParameters parameters = null) where T : GojekBasePageViewModel { var viewName = _namingConventions.GetViewName(name); if (!_componentContext.IsRegisteredWithName <GojekBasePageView>(viewName)) { return(null); } var page = _componentContext.ResolveNamed <GojekBasePageView>(viewName); var viewModelName = _namingConventions.GetViewModelName(name); if (!_componentContext.IsRegisteredWithName <GojekBasePageViewModel>(viewModelName)) { return(page); } var viewModel = _componentContext.ResolveNamed <GojekBasePageViewModel>(viewModelName); //assign current page navigator, dialoger viewModel.Navigator = _componentContext.Resolve <ICrossNavigator>(); viewModel.Dialoger = _componentContext.Resolve <ICrossDialogProvider>(); #region title //set an toan truong hop quen dat title cho mot trang nao do trong resource if (!string.IsNullOrEmpty(viewModel.Title)) { viewModel.Title = viewModel.Title; } NavigationPage.SetHasNavigationBar(page, viewModel.HasNavigationBar); NavigationPage.SetHasBackButton(page, viewModel.HasBackButton); NavigationPage.SetBackButtonTitle(page, viewModel.BackButtonTitle); #endregion //call init before page appearing only if parameter not null if (parameters != null) { page.OnInitializeView(parameters: parameters); viewModel.OnInitializeViewModel(parameters: parameters); } //extension bind viewmodel => view (page) page.BindCrossPageViewModel <T>(viewModel); return(page); }