6

从列表页面导航到详细信息页面时,有两种高级方式在页面之间传递选择数据:共享视图模型实例和在导航 Uri 的查询字符串中传递标识符。

我应该使用哪个?使用一种方法而不是另一种方法(从视图模型访问当前 Uri、导航事件的时间等)是否存在任何问题?

4

2 回答 2

8

我个人建议将标识符作为导航 URI 查询字符串的一部分传递。当您的应用程序在墓碑化后重新启用时,这些 URI 将被恢复以形成后台堆栈。

当您的应用程序在被删除后恢复时,您可以从应用程序状态重新创建应用程序视图模型,然后使用 URI 查询字符串将新创建的视图与其所需的 DataContext“结合”。

请参阅此处的工作示例:

http://www.scottlogic.co.uk/blog/colin/2011/05/a-simple-windows-phone-7-mvvm-tombstoning-example/

于 2011-06-09T08:27:06.093 回答
1

这两种方法都很好。

真正的区别在于墓碑过程

当你回到你的应用程序时,你的对象的 id 将被解析:

  • 在查询字符串中。(本国的)
  • 与您特定的隔离存储管理。

如果您选择共享视图模型,则必须在导航到时保存 id。

两者的混合似乎是最好的:您使用 queryString 导航,并使用 sharedViewModel,因此当您导航到新页面时,您会从 queryString 获取 id 并使用该 id 从 sharedViewModel 获取数据!

您可以管理 SharedViewModel 以将数据保存在 IsolatedStorage 中,以便在墓碑化时恢复 Web 加载的数据

于 2011-07-28T16:18:51.960 回答