public virtual void AddPage <T>(object data = null) where T : BaseViewModel { var page = ViewModelResolver.ResolvePageModel <T>(data); var pagemodel = page.GetModel(); pagemodel.CurrentNavigationServiceName = NavigationServiceName; _pagesInner.Add(page); var navigationContainer = CreateContainerPage(page); if (string.IsNullOrEmpty(pagemodel.Title)) { throw new Exception("no Title found for " + pagemodel.GetType().Name); } _pages.Add(pagemodel.Title, navigationContainer); _pageNames.Add(pagemodel.Title); if (_pages.Count == 1) { Detail = navigationContainer; } }
private void CreateMenuPage <T>(string masterListName) where T : BaseViewModel { var masterpage = ViewModelResolver.ResolvePageModel <T>(); var pagelist = masterpage.FindByName(masterListName); if (pagelist is ListView list) { list.ItemSelected += (sender, args) => { if (_pages.ContainsKey(((MenuItems)args.SelectedItem).Title)) { Detail = _pages[((MenuItems)args.SelectedItem).Title]; } IsPresented = false; }; } else { throw new Exception("Master list navigation name not the same as xaml"); } Master = masterpage; }
async Task PushPageModel(BaseViewModel pageModel, object data, bool modal = false, bool animate = true) { var page = ViewModelResolver.ResolvePageModel(data, pageModel); await PushPageModelWithPage(page, pageModel, data, modal, animate); }