ViewModels

时间:2018-02-20 11:18:12

标签: c# wpf mvvm

我有一个具有不同用户控件的窗口,我正在尝试遵循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
    }

0 个答案:

没有答案