就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。
9年前关闭。
我正在构建一个基于 MVVM 的应用程序。
我已经解决了大部分设计问题,但我还剩下一个概念上至关重要的问题:
我的 ViewModel 或我的模型是否应该包含模型模型的状态?
最初我认为模型应该包含自己的状态,但事实证明,在将状态传递给 ViewModel(它具有模型状态的 90%)时涉及到很多样板。
然后我想将整个状态从模型移动到 View 模型,但这并不适合我,因为我在概念上认为 View 模型具有 View 的状态而不是模型的状态。
什么是最被接受的放置状态的地方?
最佳答案
您正确感知具有 View 状态的 ViewModel。从概念上讲,模型的状态是模型的一部分,但它可能会因您的特定场景而异。将模型视为数据:作为可以序列化的东西,可以来自服务器和/或可以/应该保存在数据库中。
例如,如果您有一个购物车,那么运输车中的元素显然是模型的一部分。但是,结帐过程中的状态(已收到付款方式、已验证付款方式、已确认用户)可以采用任何一种方式。
至于样板 - 对我来说具有合理数量的样板的范式包含(实际上,在 c# 中引用)ViewModel 中的整个模型,并为模型中的所有属性公开 getter 和 setter,适当的甚至通知。例如
class PersonModel {
public string firstName { get; set; }
public string lastName { get; set; }
}
class PersonViewModel : INotifyPropertyChanged {
private PersonModel model;
// next 4 lines can be factored out to a BaseViewModel class
private PropertyChangedEventHandler PropertyChanged;
private raise(string propName) {
this.PropertyChanged( new PropertyChangedEventArgs(propName) );
}
// ... repeat for each property in the model
public string firstName {
get { return model.fistName; }
set { model.firstName = value; raise('firstName'); }
}
public string lastName {
get { return model.lastName; }
set { model.lastName = value; raise('lastName'); }
}
}
关于MVVM:模型的状态是属于模型还是 View 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16098370/