Windows 8如何管理帧中的页面堆栈?

时间:2012-07-04 10:10:47

标签: .net windows-8 windows-runtime

Windows 8如何在一个框架中管理一堆页面?

如何以编程方式清除整个堆栈,因为我需要“弹出”堆栈中的所有页面并返回到我开始的第一页(让我们说登录页面)?

4 个答案:

答案 0 :(得分:3)

查看the Frame class

的方法

this article中(必读的导航内容):

private void ResetPageCache()
{
    var cacheSize = ((Frame) Parent).CacheSize;
    ((Frame) Parent).CacheSize = 0;
    ((Frame) Parent).CacheSize = cacheSize;
}

答案 1 :(得分:3)

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

    // Use the navigation frame to return to the topmost page
    if (this.Frame != null)
    {
        while (this.Frame.CanGoBack) this.Frame.GoBack();
    }

答案 2 :(得分: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方法,它将你带回第一个屏幕(除了第一个项目之外,它将清除整个堆栈)。

我希望这会带你走向正确的方向!

答案 3 :(得分:0)

最佳解决方案是

while (this.Frame.CanGoBack)
{
    this.Frame.GoBack();
}