【发布时间】:2016-10-27 19:08:30
【问题描述】:
我正在尝试了解 MVVM 模式,但存在一些不清楚的问题。我的 Xamarin Forms 应用程序将有几个视图(这很明显)。他们每个人都必须绑定到不同的 ModelView 类吗?还是应该只有一首MV?
【问题讨论】:
-
视情况而定。通常每个视图都有自己的虚拟机,但两个相似的视图可以共享一个虚拟机。每个视图都使用同一个虚拟机是不寻常的,但对于一个可能有意义的简单应用程序来说。
我正在尝试了解 MVVM 模式,但存在一些不清楚的问题。我的 Xamarin Forms 应用程序将有几个视图(这很明显)。他们每个人都必须绑定到不同的 ModelView 类吗?还是应该只有一首MV?
【问题讨论】:
是和否
是 -> 基本上这个想法是你的ViewModel 应该只被一个视图使用。如果您使用 ViewModel 填充区域或其他任何内容,那么每次在不同位置呈现该视图时,ViewModel 都会“重复使用”。
否 -> 您可以使用多个模型在视图模型中。视图模型的目的是抽象出业务/数据层(即模型)。
但是,使用多个模型通常表明视图太大。您可能希望将其拆分为用户控件(它们有自己的视图模型)。
参考资料:
【讨论】:
我一直认为“每个视图都有自己的虚拟机”——模型是综合设计的子集。
我会从痛苦的经历中说:不要仅仅基于它们支持的视图/UI 来孤立地设计模型。如果没有一个全面的模型后端,您将很难将所有部分集成到一个连贯的、完整的、有效的业务模型中。贫乏的类,冗余位,不完整和错误的验证,相同的属性 - 不同的名称,与现有代码的不兼容性,大量的hacky胶水代码,程序员破坏彼此的代码,没有可重用性,没有现有类的重用。对我们来说,这一切都在 3 个月的测试-失败-修复-倾斜-一个尴尬的漩涡中达到了顶点。
【讨论】: