MVVM模式中应该只有一个ViewModel类吗?

5

我正在尝试理解MVVM模式,但有一些问题不太清楚。我的Xamarin Forms应用程序将具有多个视图(这是非常明显的)。每个视图都必须绑定到不同的ModelView类吗?或者可能只需要一个MV吗?


6
这要看情况。通常每个视图都有自己的VM,但是两个类似的视图可能会共用一个VM。如果是一个简单的应用程序,每个视图都使用相同的VM也是有意义的,但这种情况比较少见。 - Jason
2个回答

2

-> 基本思想是你的ViewModel应该只被一个视图使用。如果您使用一个ViewModel来填充某个区域或其他内容,那么每次该视图在不同位置呈现时都会“重用”该ViewModel

-> 您可以在一个视图模型中使用多个模型。视图模型的目的是抽象出业务/数据层(即模型)。但是,使用多个模型通常表明视图过大。您可能希望将其拆分为用户控件(它们有自己的视图模型)。

参考资料:

  1. 在MVVM中,每个UI窗口都有自己的ViewModel吗?
  2. 在MVVM中,每个ViewModel是否仅与一个Model相关联?

1

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

我会从痛苦的经历中说:不要仅基于它们支持的视图/UI在孤立的情况下设计模型。没有全面的模型后端,您将很难将所有组件集成到一个连贯、完整的业务模型中。无力的类、冗余的位、不完整和错误的验证、相同的属性-不同的名称、与现有代码不兼容、大量的hacky粘合代码、程序员破坏彼此的代码、没有可重用性、不重用现有类。对我们来说,这一切在3个月的测试-失败-修复的过程中达到了高潮,令人尴尬。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接