我在WinRT应用中使用MyToolkit MtFrame类进行分页。我想知道是否有办法导航回堆栈上的第N页而不加载中间页。
Lets说,这就是我的页面堆栈的样子:
Page 1 -> Page 2 -> Page 3 -> Page 4 -> Page 5 -> Page 6
现在来自“第6页”,如果我拨打MtFrame.GoBackToAsync(Page 2)
,它会弹出第3-5页并调用其OnNavigatedTo
事件。
有没有办法可以跳过第3-5页的加载或更改那些不为这些页面调用OnNavigatedTo
事件?
答案 0 :(得分:2)
这是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
,问题现已解决......