Модель просмотра - это то, где вы будете отслеживать свойства, характерные для представления и не требуемые для модели .
Возьмем вашу модель, предположим, что она называется Person
.
И затем вы создаете модель представления для Person
под названием PersonViewModel
, которая выглядит следующим образом:
public class PersonViewModel
{
public Person Person { get; set; }
}
(Обратите внимание, что вы, возможно, не захотите напрямую выставлять модель, но это уже другая история)
Теперь предположим, что у вас есть кнопка в представлении, которая используется для сохранения экземпляра Person
. Чтобы обеспечить лучший пользовательский интерфейс (UX), вы хотите включить кнопку, только если ваша модель действительно изменилась. Таким образом, вы реализуете интерфейс INotifyPropertyChanged
в классе Person
:
public class Person : INotifyPropertyChanged
{
...
Теперь может вывести свойство HasUnsavedChanges
из вашего Person
, которое свойство Enabled
на кнопке сохранения будет связываться с , но эта логика имеет ничего , чтобы сделать с человеком.
Это место, в которое входит модель представления. Вы должны определить это свойство свойства представления в модели представления, например:
public class PersonViewModel
{
public Person Person { get; set; }
public bool HasUnsavedChanges { get; set; }
}
Затем ваша модель просмотра будет подписана на PropertyChanged
интерфейса INotifyPropertyChanged
и переключить свойство HasUnsavedChanges
в модели представления.
Затем, если привязка настроена правильно, кнопка сохранения будет включать/отключать, когда какие-либо изменения произойдут в вашей модели, но ваша модель не имеет никакой логики, связывающей ее с представлением.
Обратите внимание, что вам также нужно будет внедрить INotifyPropertyChanged
в модель представления, а также для просмотра, когда будут сделаны изменения в модели представления, к которой она привязана.
Опять же, точка действует как мост, чтобы содержать логику, которая представляет собой комбинацию свойств модели и свойств представления, которые не принадлежат модели.