如何使用MVVlight将数据从Viewmodel传递到另一个Viewmodel

时间:2018-02-27 20:45:55

标签: c# xamarin.forms mvvm-light .net-standard-2.0

我目前正在使用 .NET Standard 作为代码共享策略开发Xamarin.forms项目。此应用使用多个页面/视图。我尝试使用 MvvmLightLibsStd10 库来使用MVVM模式。我已经成功设置了MVVM结构 就像我以前的问题一样:

Xamarin.Forms How to switch pages using MVVMLight

我遵循相同的代码结构。 每个视图(页面)都有自己的ViewModel,包含所有逻辑。 在应用程序中,有一个页面包含带有对象的Listview。 当选择一个对象时,需要将该对象传递给我的第二个页面viewmodel,因为我需要在我的secondVM中对这个对象做一些事情。我已经可以从listview视图/页面的Viewmodel中的列表中获取selectedObject。我喜欢尽可能地尊重MVVM概念,所以我尽可能地避免代码背后的代码。

当然,必须有一种方法可以使用MVVM构建多重应用程序并在页面之间传递数据。但我真的不知道该怎么做。因为我是Xamarin.forms中MVVM的新手用户。

我喜欢将标题与后退按钮导航保持一致。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

ķ。评论中的Alan Bates对使用面向消息的系统在不同页面之间传递数据有正确的想法。 MVVMLight包含一个用于此目的的IMessenger接口,我建议在页面之间传递数据,这些页面应该彼此分离。

在这种情况下,听起来你正在处理完全不同的ViewModel,但是如果你发现你的ViewModel在逻辑上是耦合的(就像在它们中有关联那样有意义的话),那很好要让ViewModel包含对另一个ViewModel的引用,根据我的知识,根本不会破坏MVVM模式。