我在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
,现在问题已经解决。。。