看起来有一个指导方针,即模型不应该将其实体暴露给视图(View),而所有必需的属性都应在ViewModel中复制。
示例:
Product
Id {get; set;}
Name {get; set;}
.......
ProductViewModel : ViewModelBase
Id {get; set;}
Name {get; set;}
.......
为什么需要这个?如果Model没有实现INPC我可以理解,但是如果它已经实现了,那我觉得这个步骤非常不必要。看起来有一个指导方针,即模型不应该将其实体暴露给视图(View),而所有必需的属性都应在ViewModel中复制。
示例:
Product
Id {get; set;}
Name {get; set;}
.......
ProductViewModel : ViewModelBase
Id {get; set;}
Name {get; set;}
.......
为什么需要这个?如果Model没有实现INPC我可以理解,但是如果它已经实现了,那我觉得这个步骤非常不必要。如果视图需要更改或您有多个视图,则对模型的更改将导致所有绑定到该模型的视图发生更改。
从视图的角度来看,它绑定的对象可能并不那么直观;当您需要向对象添加属性和/或命令时,您是将其添加到ViewModel并保留“原始”属性在Model中还是修改Model?
拥有ViewModel可以在单个Model和多个(版本的)View之间提供额外的抽象。
总之,这只是一个指导方针,但请注意,今天看起来很好的东西,在需要修改/更新应用程序时可能并不那么棒。
您的ViewModel不正确。 如果您已经有了一个Product类型的Model,您可以在ViewModel中简单地定义如下内容: public Product Product {...}