2011-07-27 34 views
0

我试图从一个Button中触发一个事件,这个事件将被捕获到另一个类中,而不需要将此类作为我的类中的一个实例。我可以这样做吗?Button触发一个事件或命令,将被另一个类捕获

可以说我的按钮在PictoPanelViewModel中创建,并且此类没有任何对MainViewModel的引用,我希望myButton触发将调用MainViewModel内部方法的事件。

我试过myButton.Command和myButton.Click,但这两个需要MainViewModel的引用,所以我可以调用它。

我现在有点困惑。

EDIT 的按钮是动态创建在PictoPanelViewModel

+0

是否MainViewModel具有对PictoPanelViewModel参考? – dbugger

+0

@dbugger是的,它的确如此。 – raym0nd

回答

1

SI假定MainViewModel至少具有用于瞬间PictoPanelViewModel的引用,并且,是在最坏的情况下,该按钮还没有被创建的但在那个时候。如果是这样的情况下我也:

  1. 添加事件myButtonClickedEvn到PictoPanelViewModel
  2. 创建方法TriggerMyButtonClickedEvn它只是触发PictoPanelViewModel
  3. 事件
  4. 副TriggerMyButtonClickedEvn到myButton.Click
  5. 在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); 
    } 

在MainViewModel(在你有PictoPanelViewModel实例的地方):

 aPictoPanelViewModel.myButtonClickedEvn += new System.EventHandler (myButtonClickedInPictoPanelViewModel); 
相关问题