private void RegisterServices() { var navigationService = new NavigationService(); navigationService.RegisterViewModels(GetType().Assembly); BaseNavigationViewModel.RegisterService(navigationService); }
/// <inheritdoc /> public async Task PushModalAsync(BaseNavigationViewModel viewModel) { viewModel.IsModal = true; var view = InstantiateView(viewModel); var nv = new NavigationPage((Page)view); await FormsNavigation.PushModalAsync(nv); }
/// <inheritdoc /> public async Task PushAsync(BaseNavigationViewModel viewModel, bool discardCurrent = false) { var currentPage = FormsNavigation.NavigationStack.LastOrDefault(); var view = InstantiateView(viewModel); await FormsNavigation.PushAsync((Page)view); if (discardCurrent && currentPage != null) { FormsNavigation.RemovePage(currentPage); } }
public Task PushModalAsync(BaseNavigationViewModel viewModel) { viewModel.Display = ViewModelDisplay.Modal; var view = InstantiateView(viewModel); // Most likely we're going to want to put this into a navigation page so we can have a title bar on it var nv = new NavigationPage((Page)view); return(FormsNavigation.PushModalAsync(nv)); }
public void ReplaceRoot(BaseNavigationViewModel viewModel, bool withNavigationEnabled = true) { if (InstantiateView(viewModel) is Page view) { if (withNavigationEnabled) { Application.Current.MainPage = new NavigationPage(view); } else { Application.Current.MainPage = view; } } }
/// <inheritdoc /> IViewFor InstantiateView(BaseNavigationViewModel viewModel) { // Figure out what type the view model is var viewModelType = viewModel.GetType(); // look up what type of view it corresponds to var viewType = _viewModelViewDictionary[viewModelType]; // instantiate it var view = (IViewFor)Activator.CreateInstance(viewType); view.ViewModel = viewModel; return(view); }
public async Task ReplaceAsync(BaseNavigationViewModel viewModel, bool allowSamePageSet = false) { // Ensure that we're not pushing a new page if the DetailPage is already set to this type if (!allowSamePageSet) { IViewFor page; if (DetailPage is NavigationPage) { page = ((NavigationPage)DetailPage).RootPage as IViewFor; } else { page = DetailPage as IViewFor; } if (page?.ViewModel.GetType() == viewModel.GetType()) { var masterController = Application.Current.MainPage as MasterDetailPage; masterController.IsPresented = false; return; } } Page newDetailPage = await Task.Run(() => { var view = InstantiateView(viewModel); // Tab pages shouldn't go into navigation pages if (view is TabbedPage) { newDetailPage = (Page)view; } else { newDetailPage = new NavigationPage((Page)view); } return(newDetailPage); }); DetailPage = newDetailPage; }
/// <inheritdoc /> public void SwitchDetailPage(BaseNavigationViewModel viewModel) { var view = InstantiateView(viewModel); Page newDetailPage; // Tab pages shouldn't go into navigation pages if (view is TabbedPage) { newDetailPage = (Page)view; } else { newDetailPage = new NavigationPage((Page)view); } DetailPage = newDetailPage; }
public Task PushAsync(BaseNavigationViewModel viewModel) { var view = InstantiateView(viewModel); return(FormsNavigation.PushAsync((Page)view)); }
void SetDetailViewModel(BaseNavigationViewModel vm) => Navigation.ReplaceAsync(vm);
Task OnCategorySelected(BaseNavigationViewModel user) { return(Navigation.PushAsync(user)); }
/// <inheritdoc /> public async Task PushAsync(BaseNavigationViewModel viewModel) { var view = InstantiateView(viewModel); await FormsNavigation.PushAsync((Page)view); }