У меня есть модель вида OperatingViewModel, содержащая ссылку на LevelAListViewModel. Каждая из моделей уровня представления представляет иерархию в базовой модели. Мой вопрос: каким образом можно уведомить об изменениях в какой-либо из ViewModels уровня [*]? OperatingViewModel?Модели с комбинированным представлением, распространяющие уведомления об изменениях
Я пробовал прослушивать событие в объекте PropertyChanged, и это работает нормально, но это не кажется очень чистым.
Я также пробовал передать родительский элемент в качестве ссылки на дочерний элемент, а затем вызвать метод, который затем вызывает его родительский элемент в цепочке, но опять же, что тоже кажется плохим.
class OperatingViewModel : INotifyPropertyChanged
{
LevelAListViewModel LevelACollection { get; set; }
}
class LevelAListViewModel : INotifyPropertyChanged
{
LevelAList _model;
LevelBListViewModel LevelBListViewModel { get; set; }
}
class LevelAViewModel : INotifyPropertyChanged
{
LevelB _model;
LevelBListViewModel LevelBListViewModel { get; set; }
}
class LevelBListViewModel : INotifyPropertyChanged
{
LevelBList _model;
ObservableCollection<LevelBViewModel> LevelBCollection { get; set; }
}
class LevelBViewModel : INotifyPropertyChanged
{
LevelB _model;
LevelCListViewModel LevelCListViewModel { get; set; }
}
class LevelCListViewModel : INotifyPropertyChanged
{
LevelCList _model;
ObservableCollection<LevelCViewModel> LevelCCollection { get; set; }
}
class LevelCViewModel : INotifyPropertyChanged
{
LevelC _model;
LevelDListViewModel LevelDListViewModel { get; set; }
DateTime StartDate
{
get { return _model.StartDate }
set
{
_model.StartDate = value;
OnPropertyChanged("StartDate");
}
}
DateTime EndDate
{
get { return _model.EndDate }
set
{
_model.EndDate = value;
OnPropertyChanged("EndDate");
}
}
}
class LevelDListViewModel : INotifyPropertyChanged
{
LevelD _model;
ObservableCollection<LevelDViewModel> LevelDCollection { get; set; }
}
class LevelDViewModel : INotifyPropertyChanged
{
LevelD _model;
int Price
{
get { return _model.Price}
set
{
_model.Price = value;
OnPropertyChanged("Price");
}
}
}