WPF MVVM ViewModel, содержащая ViewModel, не обновляемые

Я очень новичок в WPF и MVVM, и это вызывает у меня много головной боли. Из-за проблем с навигацией я решил сделать так, чтобы весь мой контент был виден сразу. Я думал, что создам новую ViewModel (MainViewModel), чтобы содержать мои две другие ViewModels (StudentViewModel а также AddStudentsViewModel).

MainViewModel содержит что-то вроде этого:

private StudentViewModel _studentVM;
private AddStudentsViewModel _addStudentsVM;

public StudentViewModel StudentVM
{
    get { return _studentVM; }
    set
    {
        if (_studentVM != value)
        {
            _studentVM = value;
            NotifyPropertyChanged("StudentVM");
        }
    }
}

(публичный AddStudentsViewModelAddStudentsVM существует, я просто пытаюсь сохранить это коротким)

Я успешно связал StudentVM а также AddStudentsVM на мой основной вид, так как я могу программно устанавливать значения во время фазы инициализации и при отладке, я вижу, что мои нажатия кнопок перенаправляются на правильные методы. Даже кажется, что я успешно добавляю учеников к объектам, однако мой основной вид не отражает эти изменения.

Я что-то упускаю в MainViewModel? Или ViewModel не может видеть изменения в других ViewModel внутри него?

2 ответа

Если ваш взгляд связан с какой-то собственностью внутри StudentViewModel через вложенную навигацию в собственность StudentVM лайк StudentVM.Property, чтобы отразить изменения на StudentVM.Property на ваш взгляд потребует, чтобы вы уведомили мнение, что StudentVM (не StudentVM.Property) изменился.

Так что это зависит от того, как вы определили свою привязку и от какого свойства вы поднимаете PropertyChanged событие.

Модель представления, которая содержит две другие модели представления. Просто подумайте об этом на секунду. Это не очень хорошая идея.

Во всяком случае, вы должны реализовать INotifyPropertyChanged в ваших содержащих моделях просмотра. Не только в содержащей MainViewModel.

Может в этом вина?

Другие вопросы по тегам