WP7:是否可以导航到Backstack中的页面而不是创建该页面的新实例?

时间:2011-10-20 10:52:59

标签: windows-phone-7

我有一个Windows Phone 7.1应用程序,其中我有三个页面,在每个页面上我有3个按钮:第一个导致页面号。 1,第二个导致页面号。 2和第三个导致页面号。 3.

问题是如果我转到第1页然后转到第2页 - 然后如果我点击第一个按钮导航到第一页,则会创建该页面的新实例。我想从后堆栈导航到页面的现有实例,而不是创建新实例。

有可能吗?

3 个答案:

答案 0 :(得分:2)

是的,您需要通过触发返回来手动向后导航(大部分相当于用户按下后退按钮):

NavigationService.GoBack();

这将利用OS维护的后栈。它将弹出第2页并重新启动第1页。请注意,您无法选择要返回的页面,如果有要返回的页面,它会向后移动一页。因此,例如,从第3页触发向后导航将转到第2页,您无法选择第1页。

或者,但不建议,你可以在后面的堆栈中弹出7.1个弹出页面:

NavigationService.RemoveBackEntry();

然后您可以手动导航到该页面。但严重的是,尽管不要打破用户的期望,尽量不这样做,除非你自己管理页面支持。

答案 1 :(得分:1)

您最好使用MVVM之类的框架来控制数据,而不是依赖于页面的特定实例,但仍然记住用户在该页面上的位置。

MVVMLight是一个不错的选择 - http://mvvmlight.codeplex.com/

然后,您只需要在应用程序中更好地控制导航,从而决定应用程序应该如何流动而不是依赖于Backstack。返回只是根据用户选择而不是应用程序的流向(不依赖于它)返回。

删除芒果中的条目等功能是解决用户导航回家并且您希望阻止返回应用流程中无效点的旧问题的一种解决方法。

答案 2 :(得分:1)

您可以{non NavigationService.Navigate(new Uri..与非线性导航服务结合使用。如果你已经在那个页面上,这将为你做back.back.back。 http://create.msdn.com/en-us/education/catalog/article/nln-serv-wp7