0

我正在开发一个 WP 8 应用程序,但我遇到了导航问题。

我找不到在不丢失实际页面状态的情况下导航到后堆栈上的页面的方法。

情况是这样的:

  1. 我在页面 A 并导航到页面 B,因此后堆栈仅包含 A。
  2. 在页面 BI 上想要导航回页面 A,但页面 B 保留在后堆栈上,所以当我再次在页面 A 上时,我可以返回页面 B 并保留它的状态。

就是这样:A --> B --> A --> B,这是一个循环,但它不是一个循环。页面 A 显示的项目也显示在页面 B 中,但细节较少,但从页面 BI 可以转到页面 A 以查看详细信息,然后再返回。

它可能看起来很复杂,但我向你保证它非常直观:) 它在 Android 和 iOS 上就像这样工作。

无论如何要在页面 A 之前将页面 B 添加到导航堆栈中,所以当我调用 NavigationService.GoBack() 时,它会以之前的状态返回到页面 A,然后从 A 到 B 执行相同的操作。

提前致谢!!!

4

2 回答 2

1

有几个选项。如果您使用标准的 MVVM 模式,那么您并没有真正保存“页面状态”(除非您的意思是列表中的滚动位置或选定的文本控件) - 您正在保存数据。下次您导航到页面 B 时,该数据将在那里。您可以观看此视频及其指向的 MSDN 文章,以获取有关数据绑定以及如何以全局状态存储将重新绑定到页面的数据的更多信息下次导航时。

如果数据绑定不能解决问题,另一种选择是根本不使用不同的页面,而只是将 A 和 B 作为同一物理页面上的两个不同容器。然后,当您需要切换回容器 A 时,您可以设置后退按钮以假装“返回”。

于 2015-02-08T08:05:19.957 回答
0

使用此帮助主题了解如何为 Windows Phone 8 保留和恢复页面状态。导航堆栈只能存储页面 URI 和少量数据(在 URI 参数中)。

像这样:

NavigationService.Navigate(new Uri("/SecondPage.xaml?var=value", UriKind.Relative));

SecondPage.xaml你可以得到 val 的值。这是详细的例子

 if (NavigationContext.QueryString.TryGetValue("val", out msg))
于 2015-02-05T23:28:21.683 回答