Exemplo n.º 1
0
        private void RootFrame_Navigating(object sender, NavigatingCancelEventArgs e)
        {
            MobileDebug.Service.WriteEventPair("Navigating1_0", "Page", e.SourcePageType, "Mode", e.NavigationMode,
                                               "Parameter", e.Parameter ?? "null", "TransInfo", e.NavigationTransitionInfo,
                                               "frames", history.Reverse().Select(f => f?.PageTypeName));

            HistoricFrameHandler handler;
            HistoricParameter    parameter;

            switch (e.NavigationMode)
            {
            case NavigationMode.New:
            case NavigationMode.Forward:
                SaveDataContext();

                handler   = HistoricFrameHandler.GetHandler(e.SourcePageType);
                parameter = handler.ToHistoricParameter(e.Parameter);

                history.Push(new HistoricFrame(e.SourcePageType, parameter));
                break;

            case NavigationMode.Refresh:
                handler   = HistoricFrameHandler.GetHandler(e.SourcePageType);
                parameter = handler.ToHistoricParameter(e.Parameter);

                history.Pop();
                history.Push(new HistoricFrame(e.SourcePageType, parameter));
                break;

            case NavigationMode.Back:
                history.Pop();
                break;
            }
            MobileDebug.Service.WriteEvent("Navigating2", history.Reverse().Select(f => f?.PageTypeName));
        }
Exemplo n.º 2
0
        public bool Restore()
        {
            MobileDebug.Service.WriteEvent("Restore1", restoreHistory.Select(f => f.PageTypeName));
            //return false;

            if (restoreHistory.Count == 0)
            {
                return(false);
            }

            HistoricFrame        frame   = restoreHistory.Dequeue();
            HistoricFrameHandler handler = HistoricFrameHandler.GetHandler(frame.Page);

            parameter = handler.FromHistoricParameter(frame.Parameter, library);

            try
            {
                MobileDebug.Service.WriteEventPair("Restore2", "Page", frame.PageTypeName, "Parameter", parameter?.Value);
                //rootFrame.Navigate(typeof(MobileDebug.DebugPage), null);
                return(rootFrame.Navigate(frame.Page, parameter.Value));
            }
            catch (Exception e)
            {
                MobileDebug.Service.WriteEvent("RestoreFail", e, frame.PageTypeName, parameter.Value);
                restoreHistory.Clear();
                return(false);
            }
        }
Exemplo n.º 3
0
        private void SaveDataContext()
        {
            if (history.Count == 0)
            {
                return;
            }

            HistoricFrame frame = history.Last();

            if (frame.Parameter.UseDataContext)
            {
                HistoricFrameHandler handler = HistoricFrameHandler.GetHandler(frame.Page);
                frame.Parameter.DataContext = handler.ToHistoricDataContext(GetCurrentPage().DataContext);
            }
        }