Previously in Windows Phone 8.0
apps, we could navigate deeper to the same page this way:
NavigationService.Navigate(new Uri(\"/SamePage.xaml\",
In App.cs you can set RootFrame.CacheSize which hints the OS how many pages it should try to keep in cache. Also you probably shouldn't reset the datacontext in NavigationHelper_LoadState - this method is called each time you navigate to the page, even if you navigate back.
In your page constructor you'll have to specify
public MainPage()
{
this.InitializeComponent();
this.NavigationCacheMode = NavigationCacheMode.Required;
}