Exemplo n.º 1
0
        public async Task <bool> RestoreSavedNavigationAsync()
        {
            DebugWrite($"Frame: {FrameFacadeInternal.FrameId}");

            try
            {
                var state = FrameFacadeInternal.PageStateSettingsService(GetType().ToString());
                if (state == null || !state.Exists("CurrentPageType"))
                {
                    return(false);
                }

                FrameFacadeInternal.CurrentPageType  = Type.GetType(state.Read <string>("CurrentPageType"));
                FrameFacadeInternal.CurrentPageParam = state.Read <object>("CurrentPageParam");
                FrameFacadeInternal.SetNavigationState(state.Read <string>("NavigateState"));

                await NavigateToAsync(NavigationMode.Refresh, FrameFacadeInternal.CurrentPageParam);

                while (FrameFacadeInternal.Frame.Content == null)
                {
                    Task.Yield().GetAwaiter().GetResult();
                }
                AfterRestoreSavedNavigation?.Invoke(this, FrameFacadeInternal.CurrentPageType);
                return(true);
            }
            catch { return(false); }
        }
Exemplo n.º 2
0
 public async Task <bool> RefreshAsync()
 {
     return(await NavigationOrchestratorAsync(CurrentPageType, CurrentPageParam, NavigationMode.Refresh, () =>
     {
         Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView().Reset();
         FrameFacadeInternal.SetNavigationState(FrameFacadeInternal.GetNavigationState());
         return true;
     }));
 }
Exemplo n.º 3
0
        public async Task <bool> LoadAsync()
        {
            // load navigation state from settings

            DebugWrite($"Frame: {FrameFacade.FrameId}");

            try
            {
                var frameState = Suspension.GetFrameState();
                if (frameState == null || !frameState.Exists("CurrentPageType"))
                {
                    return(false);
                }

                CurrentPageType  = frameState.Read <Type>("CurrentPageType");
                CurrentPageParam = frameState.Read <object>("CurrentPageParam");
                FrameFacadeInternal.SetNavigationState(frameState.Read <string>("NavigateState"));

                while (FrameFacade.Content == null)
                {
                    await Task.Delay(1);
                }

                var newPage      = FrameFacade.Content as Page;
                var newViewModel = newPage?.DataContext;

                if (newPage?.GetType() != CurrentPageType)
                {
                    // failed to load
                    return(false);
                }

                // newTemplate10ViewModel.Properties
                if (newViewModel is INavigable)
                {
                    Navigation.SetupViewModel(this, newViewModel as INavigable);
                }

                // newNavigatedAwareAsync.OnNavigatedTo
                await Navigation.NavedToAsync(newPage?.DataContext, NavigationMode.New, null, null, null, newPage, CurrentPageType, CurrentPageParam);

                RaiseAfterRestoreSavedNavigation();
                return(true);
            }
            catch { return(false); }
        }