如何从viewmodel导航到视图

时间:2011-04-11 00:01:16

标签: silverlight mvvm view viewmodel navigationservice

我想知道是否有人能就我遇到的Silverlight问题给我一些指导?

我现在正在做的是使用MVVM模式在Silverlight中构建一个页面来检索和显示我的数据。我的页面将是一个标准的“列表”类型页面,它使用数据网格来显示和过滤数据。

我想要做的是,如果用户单击此列表页面上的编辑按钮,我想导航到一个详细信息页面,其中包含我想要绑定到同一数据集合的数据表单。绑定到列表页面的数据网格。我想要发生的是List ViewModel必须创建Details Page并将Details Page datacontext设置为它自己(作为List ViewModel的实例)。我不确定如何创建视图,导航到它并将引用传递给视图模型。

您可能想知道为什么我想要一个收集的详细信息页面。这样我就可以模拟用户在当前访问应用程序中熟悉的行为。大多数情况下,当用户过滤列表视图时,它会派上用场,他们可以进入一个页面,在那里他们可以导航和编辑过滤器中的任何结果,而无需反复打开和关闭详细信息页面。

1 个答案:

答案 0 :(得分:1)

MVVM非常适合这种情况。您是正确的假设它们共享相同的视图模型,因为数据是相同的,您可以一次自动更新两个位置的数据。

但是,我会避免让视图模型创建视图。这通常被视为实现MVVM的错误方式,因为它创建了从视图模型到视图的耦合,这可能会让您以后遇到麻烦。

带有示例代码的解决方案在this博文中介绍。