C# 按钮触发将被另一个类捕获的事件或命令

C# 按钮触发将被另一个类捕获的事件或命令,c#,events,button,event-handling,icommand,C#,Events,Button,Event Handling,Icommand,我试图从一个按钮触发一个事件,该按钮将在另一个类中捕获,而不将该类作为我的类中的实例。我可以这样做吗 假设我的按钮是在PictoPanelViewModel中创建的,并且这个类没有任何对MainViewModel的引用,我希望myButton触发一个事件,该事件将调用MainViewModel中的一个方法 我试过myButton.Command和myButton.Click,但这两个都需要一个MainViewModel的引用,这样我就可以调用它了 我现在有点困惑 编辑 按钮是在PictoPane

我试图从一个按钮触发一个事件,该按钮将在另一个类中捕获,而不将该类作为我的类中的实例。我可以这样做吗

假设我的按钮是在PictoPanelViewModel中创建的,并且这个类没有任何对MainViewModel的引用,我希望myButton触发一个事件,该事件将调用MainViewModel中的一个方法

我试过myButton.Command和myButton.Click,但这两个都需要一个MainViewModel的引用,这样我就可以调用它了

我现在有点困惑

编辑
按钮是在PictoPanelViewModel中动态创建的

SI假设MainViewModel至少在一瞬间引用了PictoPanelViewModel,最坏的情况是,按钮当时尚未创建。如果是这样,我会:

  • 将事件myButtonClickedEvn添加到PictoPanelViewModel
  • 创建一个方法triggermButtonClickedevn,它只触发PictoPanelViewModel中的事件
  • 将TriggerButtonClickedevn关联到myButton。单击
  • 在MainViewModel中,当类看到PictoPanelViewModel时,将您的方法与新创建的事件相关联
  • 所有这些都转换成这样的代码

    在PictoPanelViewModel中:

            this.myButton.Click += new System.EventHandler(this.TriggerMyButtonClickedEvn);
    
        public event EventHandler myButtonClickedEvn;
    
        private void TriggerMyButtonClickedEvn(object sender, EventArgs e)
        {
            if (myButtonClickedEvn != null)
                myButtonClickedEvn(sender, e);
        }
    
            aPictoPanelViewModel.myButtonClickedEvn += new System.EventHandler (myButtonClickedInPictoPanelViewModel);
    
    在MainViewModel中(在有PictoPanelViewModel实例的地方):


    MainViewModel是否引用PictoPanelViewModel?