0

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 to first page where I started from (let's say Login Page)?

4

4 回答 4

3

看看Frame类的方法

这篇文章中(关于导航的必读):

private void ResetPageCache()
{
    var cacheSize = ((Frame) Parent).CacheSize;
    ((Frame) Parent).CacheSize = 0;
    ((Frame) Parent).CacheSize = cacheSize;
}
于 2012-07-04T10:25:41.637 回答
3

在 Common/LayoutAwarePage.cs 中有以下 GoHome() 函数(除了与标准后退按钮上的 Click-event 一起使用的 GoBack() 函数):

    // Use the navigation frame to return to the topmost page
    if (this.Frame != null)
    {
        while (this.Frame.CanGoBack) this.Frame.GoBack();
    }
于 2012-09-15T09:33:56.623 回答
0

尝试实现您自己的 Frame 类,类似于以下内容:

http://blogs.microsoft.co.il/blogs/eshaham/archive/2012/04/30/fixing-frame-navigation-in-metro-style-apps.aspx

然后你可以编写一个 RemoveLastEntry 方法,它基本上是这样做的:

void RemoveLastEntry()
{
    if (_navigationStack.Count > 0)
    {
        _navigationStack.Pop();
    }
}

并调用此方法一定次数。

或者您可以调用 GoHome 方法将您带回第一个屏幕(这将清除除第一项之外的整个堆栈)。

我希望这会带你朝着正确的方向前进!

于 2012-07-05T14:15:40.567 回答
0

最好的解决方案是

while (this.Frame.CanGoBack)
{
    this.Frame.GoBack();
}
于 2012-10-23T16:05:47.000 回答