如何将一个已经存在的ViewModel传递给一个新视图进行绑定

本文关键字:一个 新视图 绑定 存在 ViewModel | 更新日期: 2023-09-27 18:04:16

这是我的场景:在MainPage中,我显示了一个Details列表。因此,我创建了一些DetailViewModels,它们被组织在MainViewModel中的ObservableCollection中。

我想通过单击Details列表中的一个项目来打开DetailPage。我导航到DetailPage。现在我想使用已经存在的DetailViewModel(刚刚点击)绑定到DetailPage。我不知道如何做到这一点——尽管这似乎是一个相当普遍的情况。使用默认的MVVM Light创建了一个新的DetailViewModel实例。

可能我只是错过了什么…

感谢

汉斯

如何将一个已经存在的ViewModel传递给一个新视图进行绑定

总之,更改您的设置

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

您可以使用Messenger将选定的DetailModelMainViewModel传递到DetailViewModel,或者在DetailViewModel中创建一个SelectDetailModel(DetailModel model)方法,一旦新的DetailModel被选中,您就可以设置该方法

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