以下代码说明了我的问题:
public class Person : (INotifyPropertyChanged) // INPC only for PersonViewModelB
{
public string Name {get; set;}
}
public class PersonViewModelA : INotifyPropertyChanged
{
private Person _person {get; set;}
public string Name
{
get { return _person.Name; }
set { _person.Name = value; }
}
//XAML: {Binding Name}
}
public class PersonViewModelB : INotifyPropertyChanged
{
private Person Person {get; set;}
//XAML: {Binding Person.Name}
}
在许多示例中,我看到了像 PersonViewModelA 这样的东西。我不明白它的好处。对我来说,PersonViewModelB 更干净,更干燥。
在这两种情况下,我都可以向 ViewModel(例如 IsSelected)或计算字段(例如 Name = FirstName + " " + LastName)添加额外的视图特定字段。如果我有一个丰富的域模型,为什么我不能将它暴露给视图?
在 Asp.net MVC 中,我们学会了直接绑定到模型,这很好,但在 WPF 中不是吗?为什么?
什么证明额外的开销是合理的?