Windows phone 7 WP7:是否可以导航到backbackback中的页面,而不是创建该页面的新实例?

Windows phone 7 WP7:是否可以导航到backbackback中的页面,而不是创建该页面的新实例?,windows-phone-7,Windows Phone 7,我有一个WindowsPhone7.1应用程序,其中我有三个页面,每一页面上有三个按钮:第一个按钮指向第1页,第二个按钮指向第2页,第三个按钮指向第3页 问题是,如果我进入第1页,然后进入第2页,然后单击第一个按钮导航到第一页,将创建该页的新实例。我不想创建一个新实例,而是想从后堆栈导航到页面的现有实例 可能吗?是的,您需要通过触发返回手动向后导航(主要相当于用户按下后退按钮): NavigationService.GoBack() 这将使用操作系统维护的后堆栈。它将弹出第2页并重新恢复第1页。

我有一个WindowsPhone7.1应用程序,其中我有三个页面,每一页面上有三个按钮:第一个按钮指向第1页,第二个按钮指向第2页,第三个按钮指向第3页

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


可能吗?

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

NavigationService.GoBack()

这将使用操作系统维护的后堆栈。它将弹出第2页并重新恢复第1页。请注意,您不能选择要返回的页面,如果有页面要返回,则返回一页。例如,从第3页触发向后导航将使您进入第2页,您不能选择第1页

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

NavigationService.RemoveBackEntry()


然后可以手动导航到该页面。但说真的,除非您自己管理页面备份,否则不要这样做,因为这会破坏用户的期望。

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

MVVMLight是一个不错的选择-

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


删除mango中的返回条目等功能是解决旧问题的一个有效方法,用户导航回家时,您希望防止返回到应用程序流中的无效点。

您可以执行
NavigationService.Navigate(新Uri..
与非线性激活服务相结合。如果您已经阅读过该页面,则这将为您完成back.back.back操作。

我明白了。我知道GoBack()的事方法,但我正在寻找一种方法来选择返回到哪个页面。将它们从后台删除,同时只保留页面的一个实例肯定是一个解决方案。为什么我要这样做:如果你使用一个与我上面描述的应用程序一样工作的应用程序,比方说5分钟,你可以在页面之间浏览20 times,那么你需要回击20次才能关闭该应用程序。不,你不会,如果你在页面之间导航时使用
GoBack
,它会将你从堆栈中弹出的页面弹出。在你的情况下,如果操作正确,堆栈最多只能有2页。此外,页面之间的按钮s与用户期望值不符。如果用户在第2页,并且想要进入第1页,他们很有可能会使用“后退”按钮。@Adamhuldsworth很抱歉出现死线,但我有一个关于
的问题,但是说真的,不要这样做,因为这会破坏用户期望值,除非你自己管理页面备份在我的场景中,我有页面:主菜单(带产品)->设置->商店列表->商店详细信息(用户可以在这里确认所选商店,这会触发主菜单的更新)。在“用户期望”中选择商店后,我如何返回主页面不使用非线性激活服务的方式?@AdamHouldsworth我的意思是,当然,我每次都可以让用户返回上一页,但这会让用户每次都做一些额外的操作。@Vitalivasylenko如果您自己管理后台状态,那么这种方法就可以了。数据控制不是问题,我已经在使用MV了我只是担心这会影响性能。