当从列表页面导航到详细信息页面时,有两种高级方式在页面之间传递选择数据:共享视图模型实例并在导航Uri的查询字符串中传递标识符。
我应该使用哪个?使用一种方法比另一种方法有任何问题(从视图模型访问当前的Uri,导航事件的时间等)?
答案 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中保存数据,以便在逻辑删除时恢复网络加载的数据