【问题标题】:Should there be only one ViewModel class in MVVM pattern?MVVM 模式中应该只有一个 ViewModel 类吗?
【发布时间】:2016-10-27 19:08:30
【问题描述】:

我正在尝试了解 MVVM 模式,但存在一些不清楚的问题。我的 Xamarin Forms 应用程序将有几个视图(这很明显)。他们每个人都必须绑定到不同的 ModelView 类吗?还是应该只有一首MV?

【问题讨论】:

  • 视情况而定。通常每个视图都有自己的虚拟机,但两个相似的视图可以共享一个虚拟机。每个视图都使用同一个虚拟机是不寻常的,但对于一个可能有意义的简单应用程序来说。

标签: c# mvvm xamarin


【解决方案1】:

是和否
-> 基本上这个想法是你的ViewModel 应该只被一个视图使用。如果您使用 ViewModel 填充区域或其他任何内容,那么每次在不同位置呈现该视图时,ViewModel 都会“重复使用”。
-> 您可以使用多个模型在视图模型中。视图模型的目的是抽象出业务/数据层(即模型)。 但是,使用多个模型通常表明视图太大。您可能希望将其拆分为用户控件(它们有自己的视图模型)。

参考资料:

  1. With MVVM, does each UI window have its own ViewModel?
  2. In MVVM, is every ViewModel coupled to just one Model?

【讨论】:

    【解决方案2】:

    我一直认为“每个视图都有自己的虚拟机”——模型是综合设计的子集。

    我会从痛苦的经历中说:不要仅仅基于它们支持的视图/UI 来孤立地设计模型。如果没有一个全面的模型后端,您将很难将所有部分集成到一个连贯的、完整的、有效的业务模型中。贫乏的类,冗余位,不完整和错误的验证,相同的属性 - 不同的名称,与现有代码的不兼容性,大量的hacky胶水代码,程序员破坏彼此的代码,没有可重用性,没有现有类的重用。对我们来说,这一切都在 3 个月的测试-失败-修复-倾斜-一个尴尬的漩涡中达到了顶点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-02
      • 2017-11-06
      • 1970-01-01
      • 2019-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      相关资源
      最近更新 更多