MtFrame GoBackToAsync 在不加载 N-1 页的情况下弹出或导航回第 N 页
MtFrame GoBackToAsync pop or navigate back to Nth page without loading N-1 pages
我正在使用 MyToolkit MtFrame class 在我的 WinRT 应用程序中进行分页。我想知道是否有一种方法可以在不加载中间页面的情况下导航回堆栈中的第 N 页。
让我们说,这是我的页面堆栈的样子:
Page 1 -> Page 2 -> Page 3 -> Page 4 -> Page 5 -> Page 6
现在从 "Page 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
,问题现已修复...
我正在使用 MyToolkit MtFrame class 在我的 WinRT 应用程序中进行分页。我想知道是否有一种方法可以在不加载中间页面的情况下导航回堆栈中的第 N 页。
让我们说,这是我的页面堆栈的样子:
Page 1 -> Page 2 -> Page 3 -> Page 4 -> Page 5 -> Page 6
现在从 "Page 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
,问题现已修复...