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

时间:2015-03-18 16:51:26

标签: windows-phone-8 windows-runtime windows-phone winrt-xaml mytoolkit

我在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事件?

1 个答案:

答案 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,问题现已解决......