c# - saving state between pages when creating a windows 8 app -


i've been following create first windows store app using c# or visual basic tutorials provided microsoft having problems saving state when navigating between pages.

create first windows store app using c# or visual basic

part 3: navigation, layout, , views

basically i've noticed if navigate main page photo page select photo, navigate main page , go photo page again doesn't remember photo selected. i'm using following code navigate photo page main page.

private void photopagebutton_click(object sender, routedeventargs e) {     this.frame.navigate(typeof(photopage)); } 

in photo page loadstate method is

protected async override void loadstate(object navigationparameter, dictionary<string, object> pagestate) {     if (pagestate != null && pagestate.containskey("mrutoken"))     {         object value = null;         if (pagestate.trygetvalue("mrutoken", out value))         {             if (value != null)             {                 mrutoken = value.tostring();                  // open file via token stored when adding file mru list.                 windows.storage.storagefile file =                     await windows.storage.accesscache.storageapplicationpermissions.mostrecentlyusedlist.getfileasync(mrutoken);                  if (file != null)                 {                     // open stream selected file.                     windows.storage.streams.irandomaccessstream filestream =                         await file.openasync(windows.storage.fileaccessmode.read);                      // set image source bitmap.                     windows.ui.xaml.media.imaging.bitmapimage bitmapimage =                         new windows.ui.xaml.media.imaging.bitmapimage();                      bitmapimage.setsource(filestream);                     displayimage.source = bitmapimage;                      // set data context page.                     this.datacontext = file;                 }             }         }     } } 

the photo page save state is

protected override void savestate(dictionary<string, object> pagestate) {     if (!string.isnullorempty(mrutoken))     {         pagestate["mrutoken"] = mrutoken;      } } 

i've noticed pagestate null when navigated to. ideas?

i did tutorial , found 1 solution save state across pages navigation.

first, override onnavigatedfrom in order save file token state frame:

protected override void onnavigatedfrom(navigationeventargs e) {     base.onnavigatedfrom(e);      var state = suspensionmanager.sessionstateforframe(this.frame);     state["mrutoken"] = mrutoken; } 

override onnavigatedto in order load token state:

protected override void onnavigatedto(navigationeventargs e) {     base.onnavigatedto(e);      var state = suspensionmanager.sessionstateforframe(this.frame);     if (state != null && state.containskey("mrutoken"))     {         object value = null;          if (state.trygetvalue("mrutoken", out value))         {            // same code loadstate retrieve image           }     } } 

in fact, wrote function retrieve image can used in both loadstate , onnavigatedto methods.

private async void restoreimage(object value) {     if (value != null)     {         mrutoken = value.tostring();          // open file via token stored when adding file mru list.         windows.storage.storagefile file =             await windows.storage.accesscache.storageapplicationpermissions.mostrecentlyusedlist.getfileasync(mrutoken);          if (file != null)         {             // open stream selected file.             windows.storage.streams.irandomaccessstream filestream =                 await file.openasync(windows.storage.fileaccessmode.read);              // set image source bitmap.             windows.ui.xaml.media.imaging.bitmapimage bitmapimage =                 new windows.ui.xaml.media.imaging.bitmapimage();              bitmapimage.setsource(filestream);             displayimage.source = bitmapimage;              // set data context page.             this.datacontext = file;         }     } } 

Comments

Popular posts from this blog

node.js - Bad Request - node js ajax post -

Why does Ruby on Rails generate add a blank line to the end of a file? -

keyboard - Smiles and long press feature in Android -