【问题标题】:How to pass data from a Viewmodel to another Viewmodel using MVVlight如何使用 MVVlight 将数据从 Viewmodel 传递到另一个 Viewmodel
【发布时间】:2018-02-27 20:45:55
【问题描述】:

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

Xamarin.Forms How to switch pages using MVVMLight

我遵循相同的代码结构。 每个视图(页面)都有自己的 ViewModel 和所有逻辑。 在应用程序中有一个页面,其中包含一个带有对象的 Listview。 选择对象时,需要将对象传递给我的第二页ViewModel,因为我需要在我的TheireVM中使用此对象进行某些内容。我已经可以从列表视图视图/页面的视图模型中的列表中获取 selectedObject。我喜欢尽可能地尊重 MVVM 的概念,所以我尽量避免视图背后的代码。

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

我喜欢保持带有后退按钮导航的标题保持完整。 提前致谢。

【问题讨论】:

  • ...MVC 和所有的 MV* 变体在与面向消息的系统交织时总是倾向于发挥最佳效果。数据从服务返回,服务控制器将数据广播到主题。其他控制器订阅该主题并自动同步其数据。尝试查看 Reactive Extensions 和 Observables。
  • Prism 具有用于此特定任务的 NavigationParameters。也许放弃 MVVMLight 并使用 Prism?

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


【解决方案1】:

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

在这种情况下,听起来您正在处理完全不同的 ViewModel,但如果您发现您的 ViewModel 在逻辑上是耦合的(例如,关联它们是有意义的),那么 ViewModel 可以包含对另一个 ViewModel 的引用,据我所知根本不会破坏 MVVM 模式。

【讨论】:

    猜你喜欢
    • 2022-11-25
    • 2021-08-25
    • 1970-01-01
    • 2023-02-11
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多