我对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中看到更改?
如果您的视图通过嵌套导航到属性StudentVM
(如StudentVM.Property
(而绑定到StudentViewModel
内的某个属性,则要将StudentVM.Property
上的更改反映到视图中,需要通知视图StudentVM
(而不是StudentVM.Property
(已更改。
因此,这取决于您如何定义绑定,以及在哪个属性上引发PropertyChanged
事件。
包含另外两个视图模型的视图模型。想一想。这不是个好主意。
无论如何,您还必须在包含的视图模型中实现INotifyPropertyChanged
。不仅在包含的MainViewModel中。
也许这就是问题所在?