最好的解释方法是举个例子:

这是模型

public class Person
{
    public int age;
    public string name;
}

这是 View 模型
public class PersonVM
{
}

我的问题是:
虚拟机应该将人员暴露给数据模板还是用自己的属性封装模型属性?

最佳答案

View 模型应该声明自己的属性,并从 View 中隐藏模型的细节。这为您提供了最大的灵活性,并有助于防止 View 模型类型的问题泄漏到模型类中。通常,您的 View 模型类通过委派来封装模型。例如,

class PersonModel {
    public string Name { get; set; }
}

class PersonViewModel {
    private PersonModel Person { get; set;}
    public string Name { get { return this.Person.Name; } }
    public bool IsSelected { get; set; } // example of state exposed by view model

    public PersonViewModel(PersonModel person) {
        this.Person = person;
    }
}

请记住:该模型对使用它的 View 模型一无所知,而 View 模型对使用它的 View 也一无所知。该 View 对潜伏在后台的模型一无所知。因此,将模型封装在 View 模型的属性后面。

09-05 22:22