I'm very new to WPF and MVVM, and it's been causing me a lot of headaches. Due to issues with navigation, I decided to just have all my content visible at once. I thought I would create a new ViewModel (MainViewModel
) to contain my two other ViewModels (StudentViewModel
and AddStudentsViewModel
).
MainViewModel
contains something like this:
private StudentViewModel _studentVM;
private AddStudentsViewModel _addStudentsVM;
public StudentViewModel StudentVM
{
get { return _studentVM; }
set
{
if (_studentVM != value)
{
_studentVM = value;
NotifyPropertyChanged("StudentVM");
}
}
}
(public AddStudentsViewModel
AddStudentsVM
exists as well, I'm just trying to keep this short)
I have successfully bound StudentVM
and AddStudentsVM
to my main View, as I can programmatically set values during the initialization phase and when debugging, I can see my button clicks are being redirected to the correct methods. It even seems like I am successfully adding students to objects, however my main View isn't reflecting these changes.
Am I missing something in MainViewModel
? Or is it not possible for a ViewModel to see the changes in any other ViewModels inside it?
NotifyPropertyChanged()
on those. Then in the methods you can just use an empty string for the property name, which causes a refresh for all bindings in the view from that view model. – Geoff James