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