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