0

我对 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 的变化?

4

2 回答 2

0

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

因此,这取决于您如何定义绑定以及您要引发PropertyChanged事件的属性。

于 2016-10-21T10:52:18.820 回答
-1

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

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

也许这就是错?

于 2016-10-21T07:22:28.897 回答