包含ViewModel的WPF MVVM ViewModel未更新

时间:2016-10-21 00:25:38

标签: wpf mvvm view-model-pattern

我是WPF和MVVM的新手,它给我带来了很多麻烦。由于导航问题,我决定立即显示所有内容。我以为我会创建一个新的ViewModel(MainViewModel)来包含我的另外两个ViewModel(StudentViewModelAddStudentsViewModel)。

MainViewModel包含以下内容:

private StudentViewModel _studentVM;
private AddStudentsViewModel _addStudentsVM;

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

(公开AddStudentsViewModel AddStudentsVM也存在,我只是想保持这一点)

我已成功将StudentVMAddStudentsVM绑定到我的主视图,因为我可以在初始化阶段以编程方式设置值,并且在调试时,我可以看到我的按钮点击被重定向到正确的方法。它甚至似乎我成功地将学生添加到对象中,但是我的主视图并未反映这些变化。

我错过了MainViewModel中的内容吗?或者ViewModel是否无法查看其中任何其他ViewModel的更改?

2 个答案:

答案 0 :(得分:0)

包含两个其他视图模型的视图模型。试想一下吧。这不是一个好主意。

无论如何,您还必须在包含的视图模型中实现INotifyPropertyChanged。不仅在包含MainViewModel。

也许这就是错误?

答案 1 :(得分:0)

如果您的视图通过嵌套导航绑定到StudentViewModel内的某个属性StudentVM,那么要将StudentVM.Property的更改反映到您的视图中您通知视图StudentVM.Property(不是StudentVM)已更改。

所以这取决于你如何定义绑定以及你引发StudentVM.Property事件的属性。