下面的代碼說明我的問題:綁定模型,避免代理屬性
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中,我們學會了將directy綁定到模型,並且它很好,但是在WPF中它不是?爲什麼?
什麼證明額外的開銷?