private async Task PushViewModelWithPage(Page page, TinyViewModel viewModel, NavigationParameters parameters, bool modal = false, bool animate = true) { viewModel.PreviousViewModel = currentViewModel; //This is the previous page model because it's push to a new one, and this is current viewModel.CurrentNavigationServiceName = currentViewModel.CurrentNavigationServiceName; if (string.IsNullOrWhiteSpace(viewModel.PreviousNavigationServiceName)) { viewModel.PreviousNavigationServiceName = currentViewModel.PreviousNavigationServiceName; } viewModel.IsModal = modal; if (page is PopupPage) { await PopupNavigation.Instance.PushAsync((PopupPage)page, animate); } else { await TinyIoCLocator.Container.Resolve <INavigationService>(currentViewModel.CurrentNavigationServiceName).PushPage(page, modal, animate); } _ = viewModel.OnNavigatedToAsync(parameters); viewModel.OnNavigatedTo(parameters); if (page is INavigatedAware aware) { _ = aware.OnNavigatedToAsync(parameters); aware.OnNavigatedTo(parameters); } }
public Task PushPage(Page page, TinyViewModel model, bool modal = false, bool animate = true) { if (modal) { return(Navigation.PushModalAsync(CreateContainerPageSafe(page))); } return((Detail as NavigationPage).PushAsync(page, animate)); //TODO: make this better }
public static Page BindingPageModel(Page targetPage, TinyViewModel viewModel, NavigationParameters parameters = null) { viewModel.CurrentPage = targetPage; viewModel.CoreMethods = new ViewModelCoreMethods(targetPage, viewModel); viewModel.WireEvents(); viewModel.InitAsync(parameters); targetPage.BindingContext = viewModel; viewModel.OnPageCreated(); return(targetPage); }
private async Task PushPageModelWithPage(Page page, TinyViewModel viewModel, bool modal = false, bool animate = true) { viewModel.PreviousViewModel = currentViewModel; //This is the previous page model because it's push to a new one, and this is current viewModel.CurrentNavigationServiceName = currentViewModel.CurrentNavigationServiceName; if (string.IsNullOrWhiteSpace(viewModel.PreviousNavigationServiceName)) { viewModel.PreviousNavigationServiceName = currentViewModel.PreviousNavigationServiceName; } viewModel.IsModal = modal; await TinyIOC.Container.Resolve <INavigationService>(viewModel.CurrentNavigationServiceName).PushPage(page, modal, animate); }
public static Page ResolveViewModel(TinyViewModel viewModel, NavigationParameters parameters = null) { TinyIOC.Container.BuildUp(ref viewModel); var pageName = ViewModelMapper.GetPageTypeName(viewModel.GetType()); var pageType = Type.GetType(pageName); if (pageType == null) { throw new Exception(pageName + " not found"); } Page page = (Page)TinyIOC.Container.Resolve(pageType); return(BindingPageModel(page, viewModel, parameters)); }
public ViewModelCoreMethods(Page currentPage, TinyViewModel currentViewModel) { this.currentPage = currentPage; this.currentViewModel = currentViewModel; }
private async Task PushPageModel(TinyViewModel viewModel, NavigationParameters parameters, bool modal = false, bool animate = true) { var page = ViewModelResolver.ResolveViewModel(viewModel, parameters); await PushPageModelWithPage(page, viewModel, modal, animate); }
private async Task PushPageModel(TinyViewModel viewModel, bool modal = false, bool animate = true) { var page = ViewModelResolver.ResolveViewModel(viewModel); await PushPageModelWithPage(page, viewModel, modal, animate); }
public Task PushNewNavigationServiceModal(MasterDetailNavigationContainer masterDetailContainer, TinyViewModel basePageModel = null, bool animate = true) { var models = masterDetailContainer.Pages.Select(o => { if (o.Value is NavigationPage) { return(((NavigationPage)o.Value).CurrentPage.GetModel()); } else { return(o.Value.GetModel()); } }).ToList(); if (basePageModel != null) { models.Add(basePageModel); } return(PushNewNavigationServiceModal(masterDetailContainer, models.ToArray(), animate)); }
public Task PushNewNavigationServiceModal(TabbedNavigationContainer tabbedNavigationContainer, TinyViewModel baseViewModel = null, bool animate = true) { var models = tabbedNavigationContainer.TabbedPages.Select(o => o.GetModel()).ToList(); if (baseViewModel != null) { models.Add(baseViewModel); } return(PushNewNavigationServiceModal(tabbedNavigationContainer, models.ToArray(), animate)); }
public Task PushNewNavigationServiceModal(INavigationService newNavigationService, TinyViewModel basePageModels, bool animate = true) { return(PushNewNavigationServiceModal(newNavigationService, new TinyViewModel[] { basePageModels }, animate)); }