我试图了解模型到 ViewModel 的关系,但我一直遇到同样的问题。假设我们有一个只有一个字段的“Person”类:
public class Person
{
public string Name;
}
在下一阶段,我的 XAML 艺术家创建了一个用户控件来呈现一个人,他根据 MVVM 的实践需要将他的视图与 VMPerson(视图模型人)相关联,所以现在我添加另一个类:
public class VMPerson : INotifyPropertyChange
{
private Person person;
public VMPerson():this(new Person()){}
public VMPerson(Person person)
{
this.person = person;
}
public Name
{ get { return person.name; }
{ set { person.name = value; PropertyChange("Name"); }
}
所以现在我几乎所有的东西都设置好了。但是我的 VM 类与我的模型类的变化有什么关系呢?如果我添加 INotifyPropertyChanged 并在模型中为“名称”添加一个属性,我最终会得到与我的 ViewModel 类非常相似的东西,这是一个我不需要的额外层。有没有办法让我的模型类保持原样,并且仍然会在视图模型类中得到通知?如果除了使用 INotifyPropertyChanged 机制或将在模型中实现的任何类似方法之外别无他法,为什么我需要 VM?只是为了将几个“模型”类聚合到一个将提供给视图的类的情况吗?
我认为我的理解中一定遗漏了一些东西,因为根据我的描述,在我看来,在使用 View 代码隐藏作为控制器时,模型到视图模式会比 MVVM 更好的抽象,但我当然不确定. 有人可以向我解释我错过了什么吗?谢谢。