导航到详细信息页面 - 共享视图模型或导航查询字符串?

时间:2011-06-09 07:59:30

标签: windows-phone-7 mvvm navigation tombstoning

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

我应该使用哪个?使用一种方法比另一种方法有任何问题(从视图模型访问当前的Uri,导航事件的时间等)?

2 个答案:

答案 0 :(得分:8)

我个人建议传递一个标识符作为导航URI查询字符串的一部分。在逻辑删除后重新启用应用程序时,这些URI将恢复为后堆栈。

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

请参阅此处的工作示例:

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

答案 1 :(得分:1)

这两个方法很顺利。

真正的区别在于墓碑过程

当您返回应用程序时,将解析对象的ID:

  • 在查询字符串中。 (天然)
  • 使用您特定的独立存储管理。

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

两者的混合似乎是最好的:你使用queryString导航,并使用sharedViewModel,所以当你导航到一个新页面时,你从queryString获得了id,并从sharedViewModel获取带有该id的数据!

您可以管理您的SharedViewModel以在IsolatedStorage中保存数据,以便在逻辑删除时恢复网络加载的数据