Цикл уведомлений модели Wpf
Привет,
Я создаю 2 экземпляра одной и той же модели для 2 окон. Класс, с помощью которого осуществляется коммуникация, называется "менеджер".
Я хочу уведомить второе окно, когда свойство изменяется в первом окне. Модель реализует
INotifyPropertyChanged
Когда значение изменяется во втором, это вызывает событие
public bool MyProperty { get { return _myProperty; } set { _myProperty = value; OnPropertyChanged(); } }
public event PropertyChangedEventHandler PropertyChanged; public void OnPropertyChanged([CallerMemberName]string caller = null) { var handler = PropertyChanged; if (handler != null) { handler(this, new PropertyChangedEventArgs(caller)); } }
В менеджере я получу уведомление и обновлю все экземпляры моделей
private void Vm_PropertyChanged(object sender, PropertyChangedEventArgs e) { var prop = TypeDescriptor.GetProperties(sender)[e.PropertyName]; if (prop != null) { object val = prop.GetValue(sender); SynchronizeViews(e.PropertyName, val); } } private void SynchronizeViews(string propertyName, object val) { foreach(MainViewModel vm in MainViewModelList) { vm.MyProperty = (bool)val; } }
В конце концов, это не работает, потому что я делаю петлю !!!!
Что я уже пробовал:
Смотрите содержание сообщения, описывающего то, что я пробовал.