private Task StoreNavigationStack(StorageFolder folder) { // Create an object for storage of the navigation state NavigationManagerState state = new NavigationManagerState(); // Enumerate all NavigationEntries in the navigation stack foreach (NavigationEntry entry in NavigationStack) { // Save the page state // TODO : Do this when navigating away from each page to save time when suspending SavePageState(entry); // Create an object for storage of this entry NavigationEntryState entryState = new NavigationEntryState() { PageName = entry.PageName, ArgumentsData = entry.ArgumentsData, StateData = entry.StateData }; state.NavigationStack.Add(entryState); } // Store the state using the IStorageManager return(storageManager.StoreAsync(folder, STORAGE_FILENAME, state)); }
// *** Methods *** public async Task <bool> RestoreNavigationStack() { // Retrieve a navigation stack from storage unless, // (1) The NavigationStorageType is 'None' // (2) Cannot find the navigation stack in storage NavigationManagerState restoredState = null; switch (NavigationStorageType) { case Navigation.NavigationStorageType.Local: restoredState = await storageManager.RetrieveAsync <NavigationManagerState>(ApplicationData.Current.LocalFolder, STORAGE_FILENAME); break; case Navigation.NavigationStorageType.Roaming: restoredState = await storageManager.RetrieveAsync <NavigationManagerState>(ApplicationData.Current.RoamingFolder, STORAGE_FILENAME); break; } // If a navigation stack is available, then restore this if (restoredState != null) { foreach (NavigationEntryState entryState in restoredState.NavigationStack.Reverse()) { // Push the restored navigation entry onto the stack NavigationStack.Push(new NavigationEntry(entryState.PageName, entryState.ArgumentsData, entryState.StateData)); } // Display the last page in the stack DisplayNavigationEntry(CurrentPage); // Call NavigatedTo() on the restored page CallNavigatedTo(CurrentPage, NavigationMode.Refresh); // Return true to signal success return(true); } // Otherwise navigate to the home page and return false else { NavigateTo(HomePageName); return(false); } }
private Task StoreNavigationStack(StorageFolder folder) { // Create an object for storage of the navigation state NavigationManagerState state = new NavigationManagerState(); // Enumerate all NavigationEntries in the navigation stack foreach (NavigationEntry entry in navigationStack) { // Save the page state // TODO : Do this when navigating away from each page to save time when suspending SavePageState(entry); // Create an object for storage of this entry NavigationEntryState entryState = new NavigationEntryState() { PageName = entry.PageName, ArgumentsData = entry.ArgumentsData, StateData = entry.StateData }; state.NavigationStack.Add(entryState); } // Store the state using the IStorageManager return storageManager.StoreAsync(folder, STORAGE_FILENAME, state); }