我正在尝试理解MVVM模式,但有一些问题不太清楚。我的Xamarin Forms应用程序将具有多个视图(这是非常明显的)。每个视图都必须绑定到不同的ModelView类吗?或者可能只需要一个MV吗?
是 -> 基本思想是你的ViewModel
应该只被一个视图使用。如果您使用一个ViewModel
来填充某个区域或其他内容,那么每次该视图在不同位置呈现时都会“重用”该ViewModel
。
否 -> 您可以在一个视图模型中使用多个模型。视图模型的目的是抽象出业务/数据层(即模型)。但是,使用多个模型通常表明视图过大。您可能希望将其拆分为用户控件(它们有自己的视图模型)。
参考资料:
我一直认为“每个视图都有自己的VM”-模型是综合设计的一个子集。
我会从痛苦的经历中说:不要仅基于它们支持的视图/UI在孤立的情况下设计模型。没有全面的模型后端,您将很难将所有组件集成到一个连贯、完整的业务模型中。无力的类、冗余的位、不完整和错误的验证、相同的属性-不同的名称、与现有代码不兼容、大量的hacky粘合代码、程序员破坏彼此的代码、没有可重用性、不重用现有类。对我们来说,这一切在3个月的测试-失败-修复的过程中达到了高潮,令人尴尬。