Я начинаю с MVVM.
Мое приложение использует этот "шаблон (шаблон PM - давайте не будем обсуждать это здесь :))" и отлично работает; Проект очень простой и предположительно легкий для начинающих!! Лишь бы было... :)
Меня озадачивает одна вещь, которая может не иметь ничего общего с MVVM как таковой; Обработчик PropertyChangedEventHandler.
Я просматриваю свой код, строка за строкой, и вижу вызов (код ниже), но я не уверен, почему я вызываю этот обработчик или что он делает!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Windows.Input;
namespace drMVVM.Model
{
public class TextContent : INotifyPropertyChanged
{
private string text;
public string Text
{
get { return text; }
set
{
if (text != value)
{
text = value;
OnPropertyChanged("Text");
}
}
}
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}
}
У меня также есть аналогичный макет кода для моей модели представления, но вместо установки свойств я просто создаю экземпляр объекта и применяю любую дополнительную логику.
Используется ли PropertyChangedEventArgs для обновления только свойств модели, если что-то изменилось? Если да, то почему он реализован в классе модели, а не только в ModelView? Это потому, что он может инстинктивно знать, следует ли просто слушать изменения или предоставить подробности уведомления о том, что изменение произошло? Если это уведомление (я так предполагаю, отсюда и название интерфейса), то что я уведомляю в своем классе модели?