Windows phone 7 MVVM Light WP7-在VM上交换视图或访问以前的VM,而不是导航查询字符串参数?

Windows phone 7 MVVM Light WP7-在VM上交换视图或访问以前的VM,而不是导航查询字符串参数?,windows-phone-7,navigation,viewmodel,mvvm-light,Windows Phone 7,Navigation,Viewmodel,Mvvm Light,有没有一种方法可以简单地在使用同一视图模型的不同视图之间交换 我希望能够让用户导航到同一视图模型的不同视图 根据到目前为止我找到的示例,我使用导航服务在视图之间切换,将ID传递给URI,以便目标VM知道要加载的记录 不同的渲染是通过绑定在XAML上的助手转换对象完成的,因此VM基本上是模型和一些导航功能的薄包装器 导航的另一种方法是在同一个视图上使用不同的渲染,并折叠未使用的视图,直到它们被使用,但这将使视图更加复杂,并将不同的渲染从导航堆栈中取出 由于VM在视图之间几乎是相同的,因此仅交换视图

有没有一种方法可以简单地在使用同一视图模型的不同视图之间交换

我希望能够让用户导航到同一视图模型的不同视图

根据到目前为止我找到的示例,我使用导航服务在视图之间切换,将ID传递给URI,以便目标VM知道要加载的记录

不同的渲染是通过绑定在XAML上的助手转换对象完成的,因此VM基本上是模型和一些导航功能的薄包装器

导航的另一种方法是在同一个视图上使用不同的渲染,并折叠未使用的视图,直到它们被使用,但这将使视图更加复杂,并将不同的渲染从导航堆栈中取出

由于VM在视图之间几乎是相同的,因此仅交换视图而不是基于ID存储/重新加载对象似乎更有意义

操作假设是,每个视图需要一个单独的VM,或者每个视图至少需要一个单独的VM实例,并且每个VM除了在导航查询字符串参数上传递的内容外,没有访问上一个VM上下文的权限

重述: 1我可以使用navigate在VM上交换视图而不丢失数据上下文吗

或 2我可以在导航到事件上访问上一个VM吗

更新: 更多信息
->从Mix11深入导航示例中,使用nav查询上传递的ID作为键从SimpleIOC检索VM,并将DataContext设置为它。这类似于在存储器中存储/检索数据对象并基于密钥检索它。这在目标页面codebehind中的OnNavigated事件处理程序中

多个视图不需要ViewModel的单独实例,您可以很高兴地共享同一个ViewModel,例如多个视图之间的单个实例。但是,您必须注意,更改此共享ViewModel的属性也会影响其他视图

此外,您还可以将模型作为一个单例保存,并允许多个ViewModels绑定到此实例

关于你的问题:

您必须导航到一个视图,但这可以绑定到一个单例ViewModel

好吧,这要看情况而定,如果你所有的视图模型都是单件的,你可以。但是你想要吗?就我个人而言,我认为分享这个模型更好