public Task SetRootPage(string rootPageKey) { //var defaultMenu = GetMenuItemList().FirstOrDefault(f => f.IsDefault); //var page = _pageResolver.ResolvePage(defaultMenu.PageKey); //var vm = _pageResolver.ResolveViewModel(defaultMenu.PageKey); //if (vm != null) //{ // page.BindingContext = vm; //} //var navigationPage = new NavigationPage(page); //_navigationService.Navigation = navigationPage.Navigation; //return navigationPage; var page = _pageResolver.ResolvePage(rootPageKey); var vm = _pageResolver.ResolveViewModel(rootPageKey); //if (vm != null) //{ // page.BindingContext = vm; //} return(Navigation.PushAsync(page)); }
private Page CreatePage(MenuItem item) { Page page = null; switch (item.ItemType) { case MenuItemType.ItemsList: page = _pageResolver.ResolvePage <ItemsListViewModel>(); break; case MenuItemType.Type2: page = _pageResolver.ResolvePage <BViewModel, string>("B"); break; case MenuItemType.Type3: page = _pageResolver.ResolvePage <CViewModel, string>("C"); break; default: page = _pageResolver.ResolvePage <DViewModel, string>("D"); break; } page.Title = item.Title; return(page); }
public TabbedView(IPageResolver pageResolver) { InitializeComponent(); Children.Add(pageResolver.ResolvePage <AViewModel>()); Children.Add(pageResolver.ResolvePage <BViewModel>()); }
public void SetAsRoot <TViewModel>(bool newNavigation = false) where TViewModel : IBaseViewModel { if (Application.Current == null) { throw new Exception("Application.Current is null"); } var page = _pageResolver.ResolvePage <TViewModel>(); if (newNavigation) { page = new NavigationPage(page); } Application.Current.MainPage = page; }
public async Task NavigateToAsync <TViewModel>() where TViewModel : ViewModelBase { var viewModel = _context.Resolve <TViewModel>(); if (!await viewModel.InitializeAsync()) { throw new ControlNotInitializedException(nameof(TViewModel)); } var pageTypeName = viewModel.GetDefaultPageName(); var page = _pageResolver.ResolvePage(pageTypeName); page.SetDataContext(viewModel); _mainWindow.LoadPage(page); }
public void InitializeMasterDetailPage(MasterDetailPage mainPage) { var masterpage = _pageResolver.ResolvePage(ViewNames.Master); //HACK: Adjusts to truncated master page, maybe fixed in future xamarin versions. if (Device.OS == TargetPlatform.Android && ((IAndroidDeviceInfo)_deviceInfo).IsKitkatAboveVersion) { masterpage.Padding = new Thickness(0, 25, 0, 0); } mainPage.Master = masterpage; MainPage = mainPage; var defaultRootPage = GetDefaultRootPage(); SetRootPage(defaultRootPage); }
public App(IPageResolver pageResolver, IMasterPageService masterPageService) { InitializeComponent(); var mainpage = pageResolver.ResolvePage(ViewNames.Main); masterPageService.InitializeMasterDetailPage((MasterDetailPage)mainpage); MainPage = mainpage; }
public List <Tuple <int, Page> > GetIndexedRootPages() { var listPageRoot = _pageResolver.ResolvePage(PageKeys.ListPage); var settingsPageRoot = _pageResolver.ResolvePage(PageKeys.Settings); List <Tuple <int, Page> > indexedRootPageList = new List <Tuple <int, Page> >(); indexedRootPageList.Add(new Tuple <int, Page>(1, new NavigationPage(settingsPageRoot) { Title = "Settings." })); indexedRootPageList.Add(new Tuple <int, Page>(0, new NavigationPage(listPageRoot) { Title = "ListPage." })); //indexedRootPageList.Add(new Tuple<int, Page>(1, settingsPageRoot)); //indexedRootPageList.Add(new Tuple<int, Page>(0, listPageRoot)); return(indexedRootPageList); }
public MasterDetailView(IPageResolver pageResolver) { _pageResolver = pageResolver; var master = pageResolver.ResolvePage <MasterViewModel>(); master.Title = "Menu"; Master = master; var firstMenuItem = MasterView.List.ItemsSource.Cast <MenuItem>().First(); var detail = CreatePage(firstMenuItem); Detail = new NavigationPage(detail); MasterView.List.ItemSelected += ListView_ItemSelected; }
/// <summary> /// Navigation to page asynchronously. /// </summary> /// <param name="pageKey">The page key as a value in page names enum.</param> /// <returns>Task.</returns> public Task PushPageAsync(object pageKey) { var page = _pageResolver.ResolvePage(pageKey); return(Navigation.PushAsync(page)); }