Exemple #1
0
        async Task PushHierarchicalView(BaseNavigationPage mainPage, Page page, ViewTransitionArgs transArgs, object args = null)
        {
            if (transArgs == null)
            {
                transArgs = new ViewTransitionArgs();
            }

            if (mainPage != null)
            {
                var numPages    = mainPage.Navigation.NavigationStack.Count;
                var currentPage = (numPages > 1) ? mainPage.Navigation.NavigationStack[numPages - 1] : mainPage;

                System.Diagnostics.Debug.WriteLine("number of pages in navigationstack for currentpage: " + currentPage.Navigation.NavigationStack.Count);
                System.Diagnostics.Debug.WriteLine("number of pages in navigationstack for mainpage: " + mainPage.Navigation.NavigationStack.Count);

                if (transArgs.IsModal)
                {
                    await currentPage.Navigation.PushModalAsync(page, transArgs.IsAnimated);
                }
                else
                {
                    await currentPage.Navigation.PushAsync(page, transArgs.IsAnimated);
                }
            }
            else
            {
                Application.Current.MainPage = new BaseNavigationPage(page);
            }
        }
Exemple #2
0
        /// <summary>
        /// Implements the corresponding method in the INavigationService interface.
        /// Removes the current page from the stack.
        /// </summary>
        /// <param name="transArgs"> to specify if the page is modal </param>
        public void PopView(ViewTransitionArgs transArgs)
        {
            var mainPage = Application.Current.MainPage as BaseNavigationPage;

            System.Diagnostics.Debug.WriteLine("before pop: #pages in navigationstack: " + mainPage.Navigation.NavigationStack.Count);
            System.Diagnostics.Debug.WriteLine("before pop: #pages in modalstack: " + mainPage.Navigation.NavigationStack.Count);

            if (transArgs.IsModal)
            {
                mainPage.Navigation.RemovePage(mainPage.Navigation.ModalStack[mainPage.Navigation.ModalStack.Count - 1]);
            }
            else
            {
                mainPage.Navigation.RemovePage(mainPage.Navigation.NavigationStack[mainPage.Navigation.NavigationStack.Count - 1]);
            }
        }
Exemple #3
0
        /// <summary>
        /// Implements the corresponding method in the INavigationService interface.
        /// </summary>
        /// <param name="page"> page to navigate to </param>
        /// <param name="transArgs"> isModal and isAnimated </param>
        /// <param name="args"> optional paraters for the page </param>
        /// <returns></returns>
        public async Task PushView(Page page, ViewTransitionArgs transArgs, object args = null)
        {
            var mainPage = Application.Current.MainPage;

            if (mainPage == null)
            {
                Application.Current.MainPage = new MasterDetailPage();
            }
            if (mainPage is MasterDetailPage)
            {
                await PushDetailView(mainPage as MasterDetailPage, page, args);
            }
            else if (mainPage is BaseNavigationPage)
            {
                await PushHierarchicalView(mainPage as BaseNavigationPage, page, transArgs, args);
            }
        }