MVVM - 如何将已存在的ViewModel传递给新视图以进行数据绑定

时间:2016-08-28 05:47:10

标签: c# mvvm mvvm-light

这是我的风景:在MainPage中我显示了一个详细信息列表。所以我创建了一些DetailViewModel,它们在ObservableCollection中的MainViewModel中进行组织。

我想通过单击“详细信息”列表中的一个项来打开DetailPage。所以我导航到DetailPage。现在我想使用已经存在的DetailViewModel(只需单击)绑定到DetailPage。我不知道该怎么做 - 虽然这种情况很常见。使用默认MVVM Light创建了一个新的DetailViewModel实例。

可能我只是错过了一些东西......

由于

汉斯 - 彼得

1 个答案:

答案 0 :(得分:0)

简而言之,请更改您的设置

ViewModel收集要显示的所有Models(包含数据),但不包含数据本身。因此,在您的情况下,DetailViewModel应该只在您的应用程序中存在一次,但它可能包含DetailModel,其中包含您要显示的实际数据。

构建后,您可以使用MessengerDetailModel中的所选MainViewModel传递给DetailViewModel,或者创建SelectDetailModel(DetailModel model)方法您选择新DetailViewModel后设置的DetailModel

SimpleIoc.Default.GetInstance<DetailViewModel>().SelectDetailModel(model);