0

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

可以说,这是我的页面堆栈的样子:

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

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

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

4

1 回答 1

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,问题现已修复...

于 2015-03-19T08:57:55.593 回答