如何使用MVVM在Silverlight 4.0中执行导航?

时间:2010-10-28 18:28:26

标签: silverlight mvvm silverlight-4.0 navigation

我是Silverlight的新手,我无法理解如何在页面之间正确导航,尤其是当我需要传递数据时。

经典示例:我在一个页面上有一个People列表,当我点击datagrid中的某个人时,我想转到详细信息页面并加载该数据。我需要传递PersonId。更重要的是,我需要知道如何从ViewModel执行此操作。

从ViewModel上的数据网格中触发命令很容易,并且viewmodel上的SelectedItem也被绑定并因此被跟踪,但是又如何呢?我如何进入下一页?我不能为我的生活把这一点弄清楚。这看起来应该很容易,但到目前为止,这一切都很简单。

2 个答案:

答案 0 :(得分:0)

最基本的事情是更改Application.Current.RootVisual设置的内容并设置相应的DataContext。但是,有一些包装器可以为您正确设置它。例如,在您导航到的自定义视图中,您可以让视图的构造函数以更好的方式为您处理某些逻辑。如果您正在使用Prism,那么您最终将讨论修改shell或shell中的容器。

答案 1 :(得分:0)

在SelectedItemChanged中,您可以使用其他页面中所需的对象设置ViewModel属性“SelectedItem”。 ViewModel需要是一个Singleton。在另一个页面中,您需要将DataContext设置为ViewModel,现在您可以将SelectedItem绑定到所需的控件。

我唯一不喜欢的是你仍然需要转到起始页面后面的代码,从DataGrid获取SelectedItem并使用此值设置ViewModel。