Beispiel #1
0
        public void OnNavigatedTo(MtNavigationEventArgs e)
        {
            if (PageKey != null) // new instance
            {
                return;
            }

            var frameState = MtSuspensionManager.SessionStateForFrame(_page.Frame);

            PageKey = "Page" + _page.Frame.BackStackDepth;

            if (e.NavigationMode == NavigationMode.New)
            {
                var nextPageKey   = PageKey;
                var nextPageIndex = _page.Frame.BackStackDepth;
                while (frameState.Remove(nextPageKey))
                {
                    nextPageIndex++;
                    nextPageKey = "Page" + nextPageIndex;
                }

                // Does not make sense when no page state is available...
                //var args = new MtLoadStateEventArgs(e.Parameter, null);

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

                _page.LoadState(e.Parameter, null);
                //_page.OnLoadState(args);
            }
            else
            {
                var pageState = (Dictionary <String, Object>)frameState[PageKey];
                var args      = new MtLoadStateEventArgs(e.Parameter, pageState);

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

                _page.LoadState(e.Parameter, pageState);
                _page.OnLoadState(args);
            }
        }
Beispiel #2
0
        public void OnNavigatedFrom(MtNavigationEventArgs e)
        {
            if (_page.Frame.DisableForwardStack && e.NavigationMode == NavigationMode.Back)
            {
                return;
            }

            var frameState = MtSuspensionManager.SessionStateForFrame(_page.Frame);
            var pageState  = new Dictionary <String, Object>();
            var args       = new MtSaveStateEventArgs(pageState);

            var copy = SaveState;

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

            _page.SaveState(pageState);
            _page.OnSaveState(args);

            frameState[PageKey] = pageState;
        }