【问题标题】:MVVM - How to pass an already existing ViewModel to a new View to be databoundMVVM - 如何将现有的 ViewModel 传递给新的 View 以进行数据绑定
【发布时间】:2017-01-04 10:18:00
【问题描述】:

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

我想通过单击详细信息列表中的一项来打开详细信息页面。所以我导航到DetailPage。现在我想使用已经存在的DetailViewModel(刚刚点击)绑定到DetailPage。我不知道该怎么做——尽管这似乎是一种很常见的情况。使用默认的 MVVM Light 会创建一个新的 DetailViewModel 实例。

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

谢谢

汉斯-彼得

【问题讨论】:

    标签: c# mvvm mvvm-light


    【解决方案1】:

    简而言之,改变你的设置

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-01-20
      • 1970-01-01
      • 2011-01-21
      • 1970-01-01
      • 2020-01-27
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      • 1970-01-01
      相关资源
      最近更新 更多