Windows phone 8 MtFrame GoBackToAsync pop或导航回第N页而不加载N-1页
我正在WinRT应用程序中使用类进行分页。我想知道是否有一种方法可以在不加载中间页的情况下导航回堆栈上的第n页 让我们说,我的页面堆栈是这样的:Windows phone 8 MtFrame GoBackToAsync pop或导航回第N页而不加载N-1页,windows-phone-8,windows-runtime,windows-phone,winrt-xaml,mytoolkit,Windows Phone 8,Windows Runtime,Windows Phone,Winrt Xaml,Mytoolkit,我正在WinRT应用程序中使用类进行分页。我想知道是否有一种方法可以在不加载中间页的情况下导航回堆栈上的第n页 让我们说,我的页面堆栈是这样的: Page 1 -> Page 2 -> Page 3 -> Page 4 -> Page 5 -> Page 6 现在从“第6页”开始,如果我调用MtFrame.GoBackToAsync(第2页),它将弹出第3-5页,并调用其on导航到事件 是否有任何方法可以跳过第3-5页的加载,或者使其不调用这些页面的OnNavig
Page 1 -> Page 2 -> Page 3 -> Page 4 -> Page 5 -> Page 6
现在从“第6页”开始,如果我调用MtFrame.GoBackToAsync(第2页)
,它将弹出第3-5页,并调用其on导航到
事件
是否有任何方法可以跳过第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
,问题现已解决…您是否尝试过RemovePageFromStackAt方法在导航前删除不需要的页面?谢谢@Rico,它成功了!,如果有人需要动态的逻辑,下面是我做的:while(currentView.Frame.PreviousPage!=desiredPage){currentView.Frame.RemovePageFromStackAt(currentView.Frame.CurrentIndex-1);}Thx,但是你知道,这不是一个好的解决方案,因为它完全删除页面,而不仅仅是向后导航。。。前向导航将被中断。一旦我有时间,我将重新实现GoBackToAsync
方法,使其正常工作。