No problem - this is one of the aims of the Okra App Framework to provide a solid MVVM navigation structure that correctly handles termination.
To start with I will assume that you are using the Okra INavigationManager to handle you app navigation - see
http://andyonwpf.blogspot.co.uk/2012/04/navigation-in-cocoon-mvvm-for-metro.html for more information. In addition the OkraShellSample in the Okra CodePlex downloads area, whilst designed to demonstrate something a custom shell, shows how to define
your pages and navigation. You are probably best starting with the standard OkraBootstrapper (see
http://andyonwpf.blogspot.co.uk/2012/05/getting-started-with-cocoon-navigation.html - note change of framework name!)
Once you have set up your application using the Okra navigation system you need to opt-in to handling termination. The full details are available at
http://andyonwpf.blogspot.co.uk/2012/05/cocoon-navigation-making-your-app.html. In summary it is a single line that you need to add in the bootstrapper SetupNavigationManager() method,
public class AppBootstrapper : CocoonBootstrapper
// *** Overriden base methods ***
protected override void SetupNavigationManager()
NavigationManager.NavigationStorageType = NavigationStorageType.Local;
This tells the Okra navigation system to store the navigation stack on suspension in local storage (you can also ask for this to be roaming) and upon application reactivation it will restore the stack. You can also do more advanced things - pass arguments
to pages, store viewmodel specific state, etc. Check out my blog for further posts that might be of interest (http://andyonwpf.blogspot.co.uk/).
I have adding better samples and documentation on my current roadmap as I realise they are very useful to new users of the framework and will be coming in the future.