我有一个具有不同用户控件的窗口,我正在尝试遵循MVVM模式,其中有适当的视图模型用于窗口和用户控件。 我想从一个usercontrolviewmodel引发一个事件,并在mainwindowviewmodel中订阅它。
有一个按钮" CreateProject"鉴于Usercontrol绑定到其usercontrolviewmodel中的命令。当我按下此按钮时,应该引发一个事件,然后它应该被windowviewmodel选中,windowviewmodel应该更改CurrentPageViewModel。
到目前为止,视图,视图模型和命令正在按预期工作,但是这个新添加的事件始终为null,并且根本没有触发windowviewmodel(即methi)中订阅的方法。
我花了很多时间,但我不知道问题是什么。
如果需要更多信息,请告诉我。
UsercontrolViewModel:
public event EventHandler ChangeViewEvent;
public ICommand CreateProject
{
get { return new RelayCommand(CreateProject); }
}
private void CreateProject(object obj)
{
MethodCallingEvent(EventArgs.Empty);
}
private void MethodCallingEvent(EventArgs e)
{
EventHandler handler = ChangeViewEvent;
if (handler != null)
{
handler(this, e);
}
}
WindowViewModel:
UsercontrolViewModel usercontrol1viewmodel;
public WindowViewModel()
{
usercontrol1viewmodelobject = new usercontrol1viewmodel();
//Adding Available usercontrols
PageViewModels.Add(usercontrol1viewmodelobject);
PageViewModels.Add(new usercontrol2ViewModel());
PageViewModels.Add(new usercontrol3ViewModel());
// Set starting page
CurrentPageViewModel = PageViewModels[0];
usercontrol1viewmodel.ChangeViewEvent += methi;
}
void methi(object sender, EventArgs e)
{
//Change the CurrentPageViewModel
}