コード例 #1
0
ファイル: MtFrame.cs プロジェクト: lulzzz/infonetpos_ui
        private async Task <bool> RaisePageOnNavigatingFromAsync(MtPageDescription currentPage, MtPageDescription nextPage, NavigationMode mode)
        {
            var page = currentPage.GetPage(this);

            var args = new MtNavigatingCancelEventArgs();

            args.Content        = page;
            args.SourcePageType = currentPage.Type;
            args.NavigationMode = mode;
            args.Parameter      = currentPage.Parameter;

            await page.OnNavigatingFromCoreAsync(args);

            if (!args.Cancel && nextPage != null)
            {
                var args2 = new MtNavigatingCancelEventArgs();
                args2.SourcePageType = nextPage.Type;
                args2.NavigationMode = mode;
                args2.Parameter      = nextPage.Parameter;

                var copy = Navigating;
                if (copy != null)
                {
                    copy(this, args2);
                    args.Cancel = args2.Cancel;
                }
            }

            return(args.Cancel);
        }
コード例 #2
0
        private async Task <bool> NavigateAsync(MtPageDescription newPage)
        {
            try
            {
                IsNavigating = true;

                var currentPage = CurrentPage;
                if (currentPage != null)
                {
                    if (await RaisePageOnNavigatingFromAsync(CurrentPage, newPage, NavigationMode.New))
                    {
                        return(false);
                    }
                }

                RemoveForwardStack();
                await NavigateWithAnimationsAndCallbacksAsync(NavigationMode.New, currentPage, newPage, CurrentIndex + 1);

                return(true);
            }
            finally
            {
                IsNavigating = false;
            }
        }
コード例 #3
0
ファイル: MtFrame.cs プロジェクト: lulzzz/infonetpos_ui
 private void ReleasePageIfNecessary(MtPageDescription page)
 {
     if (page != null && (page.Page.NavigationCacheMode == NavigationCacheMode.Disabled || DisableCache))
     {
         page.ReleasePage();
     }
 }
コード例 #4
0
ファイル: MtFrame.cs プロジェクト: lulzzz/infonetpos_ui
        private void RaisePageOnNavigatedTo(MtPageDescription description, NavigationMode mode)
        {
            var page = description.GetPage(this);

            var args = new MtNavigationEventArgs();

            args.Content        = page;
            args.SourcePageType = description.Type;
            args.Parameter      = description.Parameter;
            args.NavigationMode = mode;
            page.OnNavigatedToCore(args);

            var copy = Navigated;

            if (copy != null)
            {
                copy(this, args);
            }

            OnNavigated(this, args);

            if (args.NavigationMode == NavigationMode.New)
            {
                OnPageCreated(this, page);
            }
        }
コード例 #5
0
 private void SwitchPagesIfSequential(PageInsertionMode insertionMode, MtPageDescription currentPage, MtPageDescription newPage)
 {
     if (insertionMode == PageInsertionMode.Sequential)
     {
         if (currentPage != null)
         {
             ContentGrid.Children.Remove(currentPage.GetPage(this).InternalPage);
         }
         ContentGrid.Children.Add(newPage.GetPage(this).InternalPage);
     }
 }
コード例 #6
0
        /// <summary>Removes a page from the page stack. </summary>
        /// <param name="pageDescription">The page to remove. </param>
        /// <returns><c>true</c> if the page has been found and was removed; otherwise, <c>false</c>. </returns>
        /// <exception cref="ArgumentException">The current page cannot be removed from the stack. </exception>
        public bool RemovePageFromStack(MtPageDescription pageDescription)
        {
            var index = _pages.IndexOf(pageDescription);

            if (index >= 0)
            {
                RemovePageFromStackAt(index);
                return(true);
            }
            return(false);
        }
コード例 #7
0
ファイル: MtFrame.cs プロジェクト: lulzzz/infonetpos_ui
        private void ChangeCurrentPageAndRaiseNavigationEvents(NavigationMode navigationMode, MtPageDescription currentPage,
                                                               MtPageDescription newPage, int nextPageIndex)
        {
            if (currentPage != null)
            {
                RaisePageOnNavigatedFrom(currentPage, navigationMode);
            }

            _pageStackManager.ChangeCurrentPage(newPage, nextPageIndex);

            RaisePageOnNavigatedTo(newPage, navigationMode);
            ((CommandBase)GoBackCommand).RaiseCanExecuteChanged();
        }
コード例 #8
0
ファイル: MtFrame.cs プロジェクト: lulzzz/infonetpos_ui
        private void RaisePageOnNavigatedFrom(MtPageDescription description, NavigationMode mode)
        {
            var page = description.GetPage(this);

            var args = new MtNavigationEventArgs();

            args.Content        = page;
            args.SourcePageType = description.Type;
            args.Parameter      = description.Parameter;
            args.NavigationMode = mode;

            page.OnNavigatedFromCore(args);
        }
コード例 #9
0
        private async Task <bool> RaisePageOnNavigatingFromAsync(MtPageDescription description, NavigationMode mode)
        {
            var page = description.GetPage(this);

            var args = new MtNavigatingCancelEventArgs();

            args.Content        = page;
            args.SourcePageType = description.Type;
            args.NavigationMode = mode;

            IsNavigating = true;
            await page.OnNavigatingFromCoreAsync(args);

            IsNavigating = false;

            return(args.Cancel);
        }
コード例 #10
0
        /// <summary>Navigates forward to a new instance of the given page type. </summary>
        /// <param name="pageType">The page type. </param>
        /// <param name="parameter">The page parameter. </param>
        /// <returns>Returns true if the navigation process has not been cancelled. </returns>
        public async Task <bool> NavigateAsync(Type pageType, object parameter)
        {
            var currentPage = CurrentPage;

            if (currentPage != null && await RaisePageOnNavigatingFromAsync(CurrentPage, NavigationMode.New))
            {
                return(false);
            }

            RemoveForwardStack();

            var newPage = new MtPageDescription(pageType, parameter);

            await NavigateWithAnimationsAndCallbacksAsync(NavigationMode.New, currentPage, newPage, _currentIndex + 1);

            return(true);
        }
コード例 #11
0
        private void ChangeCurrentPageAndRaiseNavigationEvents(NavigationMode navigationMode, MtPageDescription currentPage,
                                                               MtPageDescription newPage, int nextPageIndex)
        {
            if (currentPage != null)
            {
                RaisePageOnNavigatedFrom(currentPage, navigationMode);
            }

            if (navigationMode == NavigationMode.New)
            {
                _pages.Add(newPage);
            }
            CurrentIndex = nextPageIndex;

            RaisePageOnNavigatedTo(newPage, navigationMode);
            ((CommandBase)GoBackCommand).RaiseCanExecuteChanged();
        }
コード例 #12
0
ファイル: MtFrame.cs プロジェクト: lulzzz/infonetpos_ui
        /// <summary>Navigates to the given page and copies the page.</summary>
        /// <param name="page">The page.</param>
        /// <returns>True if page is now on top of the stack, false when navigation from the current page failed.</returns>
        public async Task <bool> CopyToTopAndNavigateAsync(MtPageDescription page)
        {
            if (CurrentPage == page)
            {
                return(true);
            }

            if (_pageStackManager.Pages.Contains(page))
            {
                if (await NavigateAsync(page, NavigationMode.Forward))
                {
                    return(true);
                }
            }

            return(false);
        }
コード例 #13
0
ファイル: MtFrame.cs プロジェクト: lulzzz/infonetpos_ui
        private Task <bool> NavigateAsync(MtPageDescription newPage, NavigationMode navigationMode)
        {
            return(RunNavigationWithCheckAsync(async() =>
            {
                var currentPage = CurrentPage;
                if (currentPage != null)
                {
                    if (await RaisePageOnNavigatingFromAsync(CurrentPage, newPage, navigationMode))
                    {
                        return false;
                    }
                }

                _pageStackManager.ClearForwardStack();

                await NavigateWithAnimationsAndCallbacksAsync(navigationMode, currentPage, newPage, _pageStackManager.CurrentIndex + 1);

                return true;
            }));
        }
コード例 #14
0
ファイル: MtFrame.cs プロジェクト: lulzzz/infonetpos_ui
        private async Task NavigateWithAnimationsAndCallbacksAsync(NavigationMode navigationMode,
                                                                   MtPageDescription currentPage, MtPageDescription nextPage, int nextPageIndex)
        {
            var pageAnimation = ActualPageAnimation;
            var insertionMode = pageAnimation != null ? pageAnimation.PageInsertionMode : PageInsertionMode.Sequential;

            ContentGrid.IsHitTestVisible = false;

            AddNewPageToGridIfNotSequential(insertionMode, nextPage);

            await AnimateNavigatedFromIfCurrentPageNotNull(pageAnimation, navigationMode, insertionMode, currentPage, nextPage);

            SwitchPagesIfSequential(insertionMode, currentPage, nextPage);
            ChangeCurrentPageAndRaiseNavigationEvents(navigationMode, currentPage, nextPage, nextPageIndex);

            await AnimateNavigatedToAndRemoveCurrentPageAsync(pageAnimation, navigationMode, insertionMode, currentPage, nextPage);

            ContentGrid.IsHitTestVisible = true;

            ReleasePageIfNecessary(currentPage);
        }
コード例 #15
0
        /// <summary>Navigates to the given page and removes the page from the previous position in the page stack.</summary>
        /// <param name="page">The page.</param>
        /// <returns>True if page is now on top of the stack, false when navigation from the current page failed.</returns>
        public async Task <bool> MoveToTopAndNavigateAsync(MtPageDescription page)
        {
            if (CurrentPage == page)
            {
                return(true);
            }

            var index = _pages.IndexOf(page);

            if (index != -1)
            {
                _pages.RemoveAt(index);
                _currentIndex--;

                if (await NavigateAsync(page))
                {
                    return(true);
                }

                _pages.Insert(index, page);
            }
            return(false);
        }
コード例 #16
0
ファイル: MtFrame.cs プロジェクト: Rakim09/MyToolkit
        private async Task<bool> RaisePageOnNavigatingFromAsync(MtPageDescription description, NavigationMode mode)
        {
            var page = description.GetPage(this);

            var args = new MtNavigatingCancelEventArgs();
            args.Content = page;
            args.SourcePageType = description.Type;
            args.NavigationMode = mode;

            IsNavigating = true;
            await page.OnNavigatingFromCoreAsync(args);
            IsNavigating = false;

            return args.Cancel;
        }
コード例 #17
0
ファイル: MtFrame.cs プロジェクト: Rakim09/MyToolkit
        private async Task AnimateNavigatedToAndRemoveCurrentPageAsync(IPageAnimation pageAnimation, NavigationMode navigationMode, PageInsertionMode insertionMode, MtPageDescription currentPage, MtPageDescription newPage)
        {
            if (currentPage != null)
            {
                if (insertionMode != PageInsertionMode.Sequential)
                {
                    await AnimateNavigatedToAsync(pageAnimation, navigationMode,
                        currentPage.GetPage(this).ActualAnimationContext,
                        newPage.GetPage(this).ActualAnimationContext);

                    ContentGrid.Children.Remove(currentPage.GetPage(this).InternalPage);
                }
                else
                {
                    await AnimateNavigatedToAsync(pageAnimation, navigationMode, null,
                        newPage.GetPage(this).ActualAnimationContext);
                }
            }
        }
コード例 #18
0
ファイル: MtFrame.cs プロジェクト: Rakim09/MyToolkit
        private void ChangeCurrentPageAndRaiseNavigationEvents(NavigationMode navigationMode, MtPageDescription currentPage,
            MtPageDescription newPage, int nextPageIndex)
        {
            if (currentPage != null)
                RaisePageOnNavigatedFrom(currentPage, navigationMode);

            if (navigationMode == NavigationMode.New)
                _pages.Add(newPage);
            CurrentIndex = nextPageIndex;

            RaisePageOnNavigatedTo(newPage, navigationMode);
            ((RelayCommand)GoBackCommand).RaiseCanExecuteChanged();
        }
コード例 #19
0
ファイル: MtFrame.cs プロジェクト: Rakim09/MyToolkit
 private void AddNewPageToGridIfNotSequential(PageInsertionMode insertionMode, MtPageDescription newPage)
 {
     if (insertionMode == PageInsertionMode.ConcurrentAbove)
         ContentGrid.Children.Add(newPage.GetPage(this).InternalPage);
     else if (insertionMode == PageInsertionMode.ConcurrentBelow)
         ContentGrid.Children.Insert(0, newPage.GetPage(this).InternalPage);
 }
コード例 #20
0
ファイル: MtFrame.cs プロジェクト: Rakim09/MyToolkit
        private async Task NavigateWithAnimationsAndCallbacksAsync(NavigationMode navigationMode,
            MtPageDescription currentPage, MtPageDescription nextPage, int nextPageIndex)
        {
            var pageAnimation = ActualPageAnimation;
            var insertionMode = pageAnimation != null ? pageAnimation.PageInsertionMode : PageInsertionMode.Sequential;

            ContentGrid.IsHitTestVisible = false;

            AddNewPageToGridIfNotSequential(insertionMode, nextPage);

            await AnimateNavigatedFromIfCurrentPageNotNull(pageAnimation, navigationMode, insertionMode, currentPage, nextPage);

            SwitchPagesIfSequential(insertionMode, currentPage, nextPage);
            ChangeCurrentPageAndRaiseNavigationEvents(navigationMode, currentPage, nextPage, nextPageIndex);

            await AnimateNavigatedToAndRemoveCurrentPageAsync(pageAnimation, navigationMode, insertionMode, currentPage, nextPage);

            ContentGrid.IsHitTestVisible = true;
            
            ReleasePageIfNecessary(currentPage);
        }
コード例 #21
0
ファイル: MtFrame.cs プロジェクト: Rakim09/MyToolkit
 /// <summary>Navigates back to the given page. </summary>
 /// <param name="pageDescription">The page to navigate to. </param>
 /// <returns>True if the navigation could be performed. </returns>
 public async Task<bool> GoBackToAsync(MtPageDescription pageDescription)
 {
     var index = _pages.IndexOf(pageDescription);
     return await GoBackToAsync(index);
 }
コード例 #22
0
ファイル: MtFrame.cs プロジェクト: zhengbomo/MyToolkit
 /// <summary>Navigates to the given page and removes the page from the previous position in the page stack.</summary>
 /// <param name="page">The page.</param>
 /// <returns>True if page is now on top of the stack, false when navigation from the current page failed.</returns>
 public Task<bool> MoveToTopAndNavigateAsync(MtPageDescription page)
 {
     return _pageStackManager.MoveToTop(page, async p => await NavigateAsync(p, NavigationMode.Forward));
 }
コード例 #23
0
ファイル: MtFrame.cs プロジェクト: lulzzz/infonetpos_ui
 /// <summary>Navigates to the given page and removes the page from the previous position in the page stack.</summary>
 /// <param name="page">The page.</param>
 /// <returns>True if page is now on top of the stack, false when navigation from the current page failed.</returns>
 public Task <bool> MoveToTopAndNavigateAsync(MtPageDescription page)
 {
     return(_pageStackManager.MoveToTop(page, async p => await NavigateAsync(p, NavigationMode.Forward)));
 }
コード例 #24
0
ファイル: MtFrame.cs プロジェクト: lulzzz/infonetpos_ui
        /// <summary>Navigates forward to a new instance of the given page type.</summary>
        /// <param name="pageType">The page type. </param>
        /// <param name="parameter">The page parameter. </param>
        /// <returns>Returns true if the navigation process has not been cancelled. </returns>
        public async Task <bool> NavigateAsync(Type pageType, object parameter)
        {
            var newPage = new MtPageDescription(pageType, parameter);

            return(await NavigateAsync(newPage, NavigationMode.New));
        }
コード例 #25
0
ファイル: MtFrame.cs プロジェクト: lulzzz/infonetpos_ui
 /// <summary>Removes a page from the page stack. </summary>
 /// <param name="pageDescription">The page to remove. </param>
 /// <returns><c>true</c> if the page has been found and was removed; otherwise, <c>false</c>. </returns>
 /// <exception cref="ArgumentException">The current page cannot be removed from the stack. </exception>
 public bool RemovePageFromStack(MtPageDescription pageDescription)
 {
     return(_pageStackManager.RemovePageFromStack(pageDescription));
 }
コード例 #26
0
ファイル: MtFrame.cs プロジェクト: lulzzz/infonetpos_ui
        /// <summary>Navigates back to the given page. </summary>
        /// <param name="pageDescription">The page to navigate to. </param>
        /// <returns>True if the navigation could be performed. </returns>
        public async Task <bool> GoBackToAsync(MtPageDescription pageDescription)
        {
            var index = _pageStackManager.GetPageIndex(pageDescription);

            return(await GoBackToAsync(index));
        }
コード例 #27
0
ファイル: MtFrame.cs プロジェクト: r2d2rigo/MyToolkit
        /// <summary>Navigates to the given page and removes the page from the previous position in the page stack.</summary>
        /// <param name="page">The page.</param>
        /// <returns>True if page is now on top of the stack, false when navigation from the current page failed.</returns>
        public async Task<bool> MoveToTopAndNavigateAsync(MtPageDescription page)
        {
            if (CurrentPage == page)
                return true;

            var index = _pages.IndexOf(page);
            if (index != -1)
            {
                _pages.RemoveAt(index);
                _currentIndex--;

                if (await NavigateAsync(page))
                    return true;

                _pages.Insert(index, page);
            }
            return false;
        }
コード例 #28
0
ファイル: MtFrame.cs プロジェクト: r2d2rigo/MyToolkit
        private async Task<bool> NavigateAsync(MtPageDescription newPage)
        {
            try
            {
                IsNavigating = true;

                var currentPage = CurrentPage;
                if (currentPage != null)
                {
                    if (await RaisePageOnNavigatingFromAsync(CurrentPage, newPage, NavigationMode.New))
                        return false;
                }

                RemoveForwardStack();
                await NavigateWithAnimationsAndCallbacksAsync(NavigationMode.New, currentPage, newPage, CurrentIndex + 1);

                return true;
            }
            finally
            {
                IsNavigating = false;
            }
        }
コード例 #29
0
ファイル: MtFrame.cs プロジェクト: r2d2rigo/MyToolkit
        private async Task<bool> RaisePageOnNavigatingFromAsync(MtPageDescription currentPage, MtPageDescription targetPage, NavigationMode mode)
        {
            var page = currentPage.GetPage(this);

            var args = new MtNavigatingCancelEventArgs();
            args.Content = page;
            args.SourcePageType = currentPage.Type;
            args.NavigationMode = mode;
            args.Parameter = currentPage.Parameter;

            await page.OnNavigatingFromCoreAsync(args);

            if (!args.Cancel && targetPage != null)
            {
                var args2 = new MtNavigatingCancelEventArgs();
                args2.SourcePageType = targetPage.Type;
                args2.NavigationMode = mode;
                args2.Parameter = targetPage.Parameter;

                var copy = Navigating;
                if (copy != null)
                {
                    copy(this, args2);
                    args.Cancel = args2.Cancel;
                }
            }

            return args.Cancel;
        }
コード例 #30
0
 /// <exception cref="ArgumentException">The current page cannot be removed from the stack. </exception>
 public bool RemovePageFromStack(MtPageDescription pageDescription)
 {
     var index = GetPageIndex(pageDescription);
     if (index >= 0)
     {
         RemovePageFromStackAt(index);
         return true;
     }
     return false;
 }
コード例 #31
0
ファイル: MtFrame.cs プロジェクト: r2d2rigo/MyToolkit
 /// <summary>Navigates forward to a new instance of the given page type. </summary>
 /// <param name="pageType">The page type. </param>
 /// <param name="parameter">The page parameter. </param>
 /// <returns>Returns true if the navigation process has not been cancelled. </returns>
 public async Task<bool> NavigateAsync(Type pageType, object parameter)
 {
     var newPage = new MtPageDescription(pageType, parameter);
     return await NavigateAsync(newPage);
 }
コード例 #32
0
        public void ChangeCurrentPage(MtPageDescription newPage, int nextPageIndex)
        {
            if (_pages.Count <= nextPageIndex)
                _pages.Add(newPage);

            CurrentIndex = nextPageIndex;
        }
コード例 #33
0
ファイル: MtFrame.cs プロジェクト: zhengbomo/MyToolkit
 /// <summary>Removes a page from the page stack. </summary>
 /// <param name="pageDescription">The page to remove. </param>
 /// <returns><c>true</c> if the page has been found and was removed; otherwise, <c>false</c>. </returns>
 /// <exception cref="ArgumentException">The current page cannot be removed from the stack. </exception>
 public bool RemovePageFromStack(MtPageDescription pageDescription)
 {
     return _pageStackManager.RemovePageFromStack(pageDescription);
 }
コード例 #34
0
ファイル: MtFrame.cs プロジェクト: zhengbomo/MyToolkit
 /// <summary>Navigates back to the given page. </summary>
 /// <param name="pageDescription">The page to navigate to. </param>
 /// <returns>True if the navigation could be performed. </returns>
 public async Task<bool> GoBackToAsync(MtPageDescription pageDescription)
 {
     var index = _pageStackManager.GetPageIndex(pageDescription);
     return await GoBackToAsync(index);
 }
コード例 #35
0
ファイル: MtFrame.cs プロジェクト: Rakim09/MyToolkit
        /// <summary>Navigates forward to a new instance of the given page type. </summary>
        /// <param name="pageType">The page type. </param>
        /// <param name="parameter">The page parameter. </param>
        /// <returns>Returns true if the navigation process has not been cancelled. </returns>
        public async Task<bool> NavigateAsync(Type pageType, object parameter)
        {
            var currentPage = CurrentPage;
            if (currentPage != null && await RaisePageOnNavigatingFromAsync(CurrentPage, NavigationMode.New))
                return false;

            RemoveForwardStack();

            var newPage = new MtPageDescription(pageType, parameter);
            await NavigateWithAnimationsAndCallbacksAsync(NavigationMode.New, currentPage, newPage, CurrentIndex + 1);

            return true;
        }
コード例 #36
0
ファイル: MtFrame.cs プロジェクト: zhengbomo/MyToolkit
        private void ChangeCurrentPageAndRaiseNavigationEvents(NavigationMode navigationMode, MtPageDescription currentPage,
            MtPageDescription newPage, int nextPageIndex)
        {
            if (currentPage != null)
                RaisePageOnNavigatedFrom(currentPage, navigationMode);

            _pageStackManager.ChangeCurrentPage(newPage, nextPageIndex);

            RaisePageOnNavigatedTo(newPage, navigationMode);
            ((CommandBase)GoBackCommand).RaiseCanExecuteChanged();
        }
コード例 #37
0
ファイル: MtFrame.cs プロジェクト: Rakim09/MyToolkit
 private void ReleasePageIfNecessary(MtPageDescription page)
 {
     if (page != null && (page.Page.NavigationCacheMode == NavigationCacheMode.Disabled || DisableCache))
         page.ReleasePage();
 }
コード例 #38
0
ファイル: MtFrame.cs プロジェクト: lulzzz/infonetpos_ui
        private void AddNewPageToGridIfNotSequential(PageInsertionMode insertionMode, MtPageDescription newPage)
        {
            var page = newPage.GetPage(this).InternalPage;

            if (!ContentGrid.Children.Contains(page))
            {
                if (insertionMode == PageInsertionMode.ConcurrentAbove)
                {
                    ContentGrid.Children.Add(page);
                }
                else if (insertionMode == PageInsertionMode.ConcurrentBelow)
                {
                    ContentGrid.Children.Insert(0, page);
                }
            }
        }
コード例 #39
0
ファイル: MtFrame.cs プロジェクト: Rakim09/MyToolkit
 private async Task AnimateNavigatedFromIfCurrentPageNotNull(IPageAnimation pageAnimation, NavigationMode navigationMode,
     PageInsertionMode insertionMode, MtPageDescription currentPage, MtPageDescription newPage)
 {
     if (currentPage != null)
     {
         if (insertionMode != PageInsertionMode.Sequential)
         {
             await AnimateNavigatingFromAsync(pageAnimation, navigationMode,
                 currentPage.GetPage(this).ActualAnimationContext,
                 insertionMode != PageInsertionMode.Sequential ? newPage.GetPage(this).ActualAnimationContext : null);
         }
         else
         {
             await AnimateNavigatingFromAsync(pageAnimation, navigationMode, currentPage.GetPage(this).ActualAnimationContext, null);
         }
     }
 }
コード例 #40
0
ファイル: MtFrame.cs プロジェクト: zhengbomo/MyToolkit
        private Task<bool> NavigateAsync(MtPageDescription newPage, NavigationMode navigationMode)
        {
            return RunNavigationWithCheckAsync(async () =>
            {
                var currentPage = CurrentPage;
                if (currentPage != null)
                {
                    if (await RaisePageOnNavigatingFromAsync(CurrentPage, newPage, navigationMode))
                        return false;
                }

                _pageStackManager.ClearForwardStack();

                await NavigateWithAnimationsAndCallbacksAsync(navigationMode, currentPage, newPage, _pageStackManager.CurrentIndex + 1);
                
                return true;
            });
        }
コード例 #41
0
ファイル: MtFrame.cs プロジェクト: Rakim09/MyToolkit
 private void SwitchPagesIfSequential(PageInsertionMode insertionMode, MtPageDescription currentPage, MtPageDescription newPage)
 {
     if (insertionMode == PageInsertionMode.Sequential)
     {
         if (currentPage != null)
             ContentGrid.Children.Remove(currentPage.GetPage(this).InternalPage);
         ContentGrid.Children.Add(newPage.GetPage(this).InternalPage);
     }
 }
コード例 #42
0
ファイル: MtFrame.cs プロジェクト: lulzzz/infonetpos_ui
 private async Task AnimateNavigatedFromIfCurrentPageNotNull(IPageAnimation pageAnimation, NavigationMode navigationMode,
                                                             PageInsertionMode insertionMode, MtPageDescription currentPage, MtPageDescription newPage)
 {
     if (currentPage != null)
     {
         if (insertionMode != PageInsertionMode.Sequential)
         {
             await AnimateNavigatingFromAsync(pageAnimation, navigationMode,
                                              currentPage.GetPage(this).ActualAnimationContext,
                                              insertionMode != PageInsertionMode.Sequential?newPage.GetPage(this).ActualAnimationContext : null);
         }
         else
         {
             await AnimateNavigatingFromAsync(pageAnimation, navigationMode, currentPage.GetPage(this).ActualAnimationContext, null);
         }
     }
 }
コード例 #43
0
ファイル: MtFrame.cs プロジェクト: Rakim09/MyToolkit
        internal void RaisePageOnNavigatedFrom(MtPageDescription description, NavigationMode mode)
        {
            var page = description.GetPage(this);

            var args = new MtNavigationEventArgs();
            args.Content = page;
            args.SourcePageType = description.Type;
            args.Parameter = description.Parameter;
            args.NavigationMode = mode;

            page.OnNavigatedFromCore(args);
        }
コード例 #44
0
ファイル: MtFrame.cs プロジェクト: lulzzz/infonetpos_ui
        private async Task AnimateNavigatedToAndRemoveCurrentPageAsync(IPageAnimation pageAnimation, NavigationMode navigationMode, PageInsertionMode insertionMode, MtPageDescription currentPage, MtPageDescription newPage)
        {
            if (currentPage != null)
            {
                if (insertionMode != PageInsertionMode.Sequential)
                {
                    await AnimateNavigatedToAsync(pageAnimation, navigationMode,
                                                  currentPage.GetPage(this).ActualAnimationContext,
                                                  newPage.GetPage(this).ActualAnimationContext);

                    ContentGrid.Children.Remove(currentPage.GetPage(this).InternalPage);
                }
                else
                {
                    await AnimateNavigatedToAsync(pageAnimation, navigationMode, null,
                                                  newPage.GetPage(this).ActualAnimationContext);
                }
            }
        }
コード例 #45
0
ファイル: MtFrame.cs プロジェクト: Rakim09/MyToolkit
        private void RaisePageOnNavigatedTo(MtPageDescription description, NavigationMode mode)
        {
            var page = description.GetPage(this);

            var args = new MtNavigationEventArgs();
            args.Content = page;
            args.SourcePageType = description.Type;
            args.Parameter = description.Parameter;
            args.NavigationMode = mode;
            page.OnNavigatedToCore(args);

            var copy = Navigated;
            if (copy != null)
                copy(this, args);

            OnNavigated(this, args);

            if (args.NavigationMode == NavigationMode.New)
                OnPageCreated(this, page);
        }
コード例 #46
0
ファイル: MtFrame.cs プロジェクト: zhengbomo/MyToolkit
        /// <summary>Navigates to the given page and copies the page.</summary>
        /// <param name="page">The page.</param>
        /// <returns>True if page is now on top of the stack, false when navigation from the current page failed.</returns>
        public async Task<bool> CopyToTopAndNavigateAsync(MtPageDescription page)
        {
            if (CurrentPage == page)
                return true;

            if (_pageStackManager.Pages.Contains(page))
            {
                if (await NavigateAsync(page, NavigationMode.Forward))
                    return true;
            }

            return false;
        }
コード例 #47
0
        public async Task<bool> MoveToTop(MtPageDescription page, Func<MtPageDescription, Task<bool>> action)
        {
            if (CurrentPage == page)
                return true;

            var index = _pages.IndexOf(page);
            if (index != -1)
            {
                _pages.RemoveAt(index);
                _currentIndex--;

                if (await action(page))
                    return true;

                _pages.Insert(index, page);
            }
            return false;
        }
コード例 #48
0
        /// <summary>Navigates back to the given page. </summary>
        /// <param name="pageDescription">The page to navigate to. </param>
        /// <returns>True if the navigation could be performed. </returns>
        public async Task <bool> GoBackToAsync(MtPageDescription pageDescription)
        {
            var index = _pages.IndexOf(pageDescription);

            return(await GoBackToAsync(index));
        }
コード例 #49
0
 public int GetPageIndex(MtPageDescription pageDescription)
 {
     return _pages.IndexOf(pageDescription);
 }
コード例 #50
0
 /// <summary>Determines whether the HamburgerItem represents the given page description.</summary>
 /// <param name="item">The hamburger item.</param>
 /// <param name="pageDescription">The page description.</param>
 /// <returns>true or false.</returns>
 protected virtual bool IsHamburgerItemForPage(HamburgerItem item, MtPageDescription pageDescription)
 {
     return(item is PageHamburgerItem && ((PageHamburgerItem)item).PageType == pageDescription.Type);
 }