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);
            }
        }
        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);
            }
        }