我是WPF和MVVM的新手,它给我带来了很多麻烦。由于导航问题,我决定立即显示所有内容。我以为我会创建一个新的ViewModel(MainViewModel
)来包含我的另外两个ViewModel(StudentViewModel
和AddStudentsViewModel
)。
MainViewModel
包含以下内容:
private StudentViewModel _studentVM;
private AddStudentsViewModel _addStudentsVM;
public StudentViewModel StudentVM
{
get { return _studentVM; }
set
{
if (_studentVM != value)
{
_studentVM = value;
NotifyPropertyChanged("StudentVM");
}
}
}
(公开AddStudentsViewModel
AddStudentsVM
也存在,我只是想保持这一点)
我已成功将StudentVM
和AddStudentsVM
绑定到我的主视图,因为我可以在初始化阶段以编程方式设置值,并且在调试时,我可以看到我的按钮点击被重定向到正确的方法。它甚至似乎我成功地将学生添加到对象中,但是我的主视图并未反映这些变化。
我错过了MainViewModel
中的内容吗?或者ViewModel是否无法查看其中任何其他ViewModel的更改?
答案 0 :(得分:0)
包含两个其他视图模型的视图模型。试想一下吧。这不是一个好主意。
无论如何,您还必须在包含的视图模型中实现INotifyPropertyChanged
。不仅在包含MainViewModel。
也许这就是错误?
答案 1 :(得分:0)
如果您的视图通过嵌套导航绑定到StudentViewModel
内的某个属性StudentVM
,那么要将StudentVM.Property
的更改反映到您的视图中您通知视图StudentVM.Property
(不是StudentVM
)已更改。
所以这取决于你如何定义绑定以及你引发StudentVM.Property
事件的属性。