示例#1
0
        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;
            }
        }
示例#2
0
        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;
        }