How does Windows 8 manage a stack of Pages in a Frame?
And how can I clear the whole stack programmatically, as in I need to \'pop\' all pages in a stack and return
Try implementing your own Frame class, something similar to this:
http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/04/30/fixing-frame-navigation-in-metro-style-apps.aspx
Then you could write a RemoveLastEntry method that basically does this:
void RemoveLastEntry()
{
if (_navigationStack.Count > 0)
{
_navigationStack.Pop();
}
}
and call this method a certain number of times.
Or you could call GoHome method which takes you back to the first screen (that would be clearing the whole stack except the first item).
I hope this'll take you in the right direction!
best solution would be
while (this.Frame.CanGoBack)
{
this.Frame.GoBack();
}
In the Common/LayoutAwarePage.cs there is the following GoHome() function (in addition to the GoBack() function used with the Click-event on the standard Back button):
// Use the navigation frame to return to the topmost page
if (this.Frame != null)
{
while (this.Frame.CanGoBack) this.Frame.GoBack();
}
Have a look at the methods of the Frame class
In this article (a must read about navigation):
private void ResetPageCache()
{
var cacheSize = ((Frame) Parent).CacheSize;
((Frame) Parent).CacheSize = 0;
((Frame) Parent).CacheSize = cacheSize;
}