Итак, вернемся к вашему примеру:
Если у ViewModel есть свои собственные поля поддержки для своих свойств вместо того, чтобы выставлять свойства модели, как, например, -
private string _myProperty;
public string MyProperty
{
get { return _myProperty; }
set
{
if (_myProperty != value)
{
_myProperty = value;
OnPropertyChanged("MyProperty");
}
}
}
С чем будут связаны элементы управления в представлении? Если вы свяжетесь со свойством, которое предоставляет только частное вспомогательное поле, как любые данные попадут в представление? Например, TextBox больше не может привязываться к свойству ViewModel, MyProperty, потому что он не предоставляет Model.MyProperty. Это просто разоблачение _myProperty. Если вы делаете привязку к Model.MyProperty, как в представлении:
<TextBox Text="{Binding Model.MyProperty, UpdateSourceTrigger=Explicit}" />
<Button Command="{Binding SaveCommand}" />
... вы получите данные в TextBox. Теперь, как нам обновить модель с обновленным значением из TextBox при нажатии кнопки Сохранить?
private void SaveExecute()
{
// How do we update the Model.MyProperty value?
}