MtFrame GoBackToAsync弹出或导航回第N页,而不加载N-1页



我在WinRT应用程序中使用MyToolkit MtFrame类进行分页。我想知道是否有一种方法可以在不加载中间页面的情况下导航回堆栈上的第N页。

比方说,下面是我的页面堆栈的样子:

Page 1 -> Page 2 -> Page 3 -> Page 4 -> Page 5 -> Page 6

现在从"第6页"开始,如果我调用MtFrame.GoBackToAsync(Page 2),它会弹出第3-5页并调用其OnNavigatedTo事件。

有没有什么方法可以跳过第3-5页的加载,或者让它不为这些页面调用OnNavigatedTo事件?

这是GoBackToAsync当前的实现方式。但您可以先使用RemovePageFromStackAt删除页面,然后只调用GoBackAsync:

假设你在第6页,想转到第2页,请使用以下代码:

frame.RemovePageFromStackAt(Page5);
frame.RemovePageFromStackAt(Page4);
frame.RemovePageFromStackAt(Page3);
await frame.GoBackAsync(); 

因为您事先删除了第3-5页,GoBackAsync从第6页跳到第2页…

但请记住:这样页面将永远被删除,向前导航将被破坏,因此应禁用。。。

唯一干净的解决方案是实现GoBackToAsync,这样它不仅可以多次调用GoBackAsync。。。请为此在codeplex项目上创建一个问题。

来自@Vasanth:的通用代码

while (currentView.Frame.PreviousPage != desiredPage) 
{ 
    currentView.Frame.RemovePageFromStackAt(currentView.Frame.CurrentIndex - 1); 
}

更新:在MyToolkit v2.3.29中,您可以使用GoBackToAsync,现在问题已经解决。。。

最新更新