У меня есть ViewModel, обертывающий экземпляр объекта модели и действующий как интерфейс между моделью и представлением. В моем случае модель имеет коллекцию, которую я подключаю к представлению с наблюдаемой коллекцией в модели представления.
Например:
public class NotificationBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected bool SetField<T>(ref T field, T value, [CallerMemberName] String fieldName = null)
{
if (EqualityComparer<T>.Default.Equals(field, value)) return false;
field = value;
RaiseChangedEvent(fieldName);
return true;
}
protected T SetProperty<T>(T property, T value, [CallerMemberName] String propertyName = null)
{
if (!EqualityComparer<T>.Default.Equals(property, value)) RaiseChangedEvent(propertyName);
return value;
}
protected void RaiseChangedEvent(string changedObjectName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(changedObjectName));
}
}
public class ViewModel : NotificationBase
{
public ViewModel(ref Model model)
{
_model = model ?? throw new ArgumentNullException("Model cannot be null");
}
public ObservableCollection<Thing> ViewModelCollection
{
get { return _model.ModelCollection; }
set { _model.ModelCollection = SetProperty(_model.ModelCollection, value); }
}
private Model _model { get; set; }
}
Мой вопрос: как мне узнать, когда _model.Collection
и, таким образом, ViewModelCollection
изменены?
Примечание: Model.Collection
на самом деле ObservableCollection
, но я не знаю, как передать событие CollectionChanged
вместе с ViewModel, а затем с View.