public void AddPage <T>(string title, string iconCode, object data = null, bool requiresLogin = false) where T : FreshBasePageModel { var page = FreshPageModelResolver.ResolvePageModel <T>(data); page.Title = title; page.GetModel().CurrentNavigationServiceName = NavigationServiceName; _pagesInner.Add(page); var navigationContainer = CreateContainerPage(page); var menuData = new MenuCellData { IconCode = iconCode, Title = title, RequiresLogin = requiresLogin }; _pages.Add(menuData, navigationContainer); _pageNames.Add(title); if (_pages.Count == 1) { _currentPageData = menuData; Detail = navigationContainer; ListView.SelectedItem = menuData; } }
private async void SelectedItemChanged(object sender, SelectedItemChangedEventArgs selectedItemChangedEventArgs) { var selectedItem = (MenuCellData)selectedItemChangedEventArgs.SelectedItem; if (selectedItem != _currentPageData) { var isLoggedIn = _storageService.IsLogIn; if (selectedItem.RequiresLogin && !isLoggedIn) { //Prompt with login page. var loginPage = FreshPageModelResolver.ResolvePageModel <LoginViewModel>(); await PushPage(loginPage, null, true); //TODO fast forward user to the desired page if the login succeeds //Set the selected item back to the current page. ListView.SelectedItem = _currentPageData; } else { Detail = _pages[selectedItem]; _currentPageData = selectedItem; } } IsPresented = false; }