我正在开发 Windows Phone 应用程序,这是我遇到问题的场景:

所以我有三页,我们称之为第 1、2、3 页。

在第 1 页中,我有一个名为 start downloading 的按钮。单击按钮并使用 NavigateService.Navigate(page2Uri) 并导航到 page2。

第 2 页进行查询并从 Internet 下载图像,因此在其 OnNavigateTo 处理程序中,我检查页面返回堆栈,如果从第 1 页导航,我将进行下载。在这个页面的应用栏中,我有一个可以导航到 page3 的按钮。

第 3 页是将在第 2 页中下载的图像上执行某些行为的选项列表。一旦我选择了一个选项,我想回到第 2 页并对加载的图像执行一些行为。问题来了:如果我使用 NavigateService.Navigate(page2Uri) 从 page3 导航到 page2,它将再次调用 Page2 构造函数和 OnNavigateTo 处理程序,这将导致它丢失它已经获得的每个实例变量。
但是如果我使用 NavigatService.GoBack 它将返回到 page2,然后意识到 backstack 顶部条目是 page1(因为 page1 -> page2 -> page3)。所以它会再次重新下载所有内容。

当从第 3 页导航回第 2 页时,我不希望再次下载任何内容。所以想知道是否有人对此有好主意。

谢谢你。

最佳答案

有几种方法可以将数据传递到另一个页面:

  • 您可以使用 Shawn 建议的查询参数。
  • 您可以使用存储在 app.cs 中的全局数据
  • 可以使用静态类来保存数据。
  • 您可以使用共享的 viewModel 来保存参数。 (或 View 模型中的静态属性)

  • 这一切都取决于具体情况。我认为 Shawns 建议使用查询参数可能是最“正确”的 MVVM 方式,但其他方法也有其一席之地。

    关于c# - Windows Phone 页面导航,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11852019/

    10-11 04:34