我正试图从一个按钮触发一个事件,该事件将被捕获在一个不同的类中,而不将这个类作为我的类中的实例。我可以这么做吗?
假设我的按钮是在PictoPanelViewModel中创建的,这个类没有任何对MainViewModel的引用,我想让我的按钮触发一个事件,它将调用MainViewModel中的一个方法。
我试过myButton。Command和myButton。点击,但这两个需要MainViewModel的引用,所以我可以调用它。
我现在有点糊涂了。
编辑按钮在PictoPanelViewModel
我假设MainViewModel至少有一个对PictoPanelViewModel的引用,并且,在最坏的情况下,按钮当时还没有创建。如果是这种情况,我会:
- 添加mybuttonclickkedevn事件到PictoPanelViewModel
- 创建一个方法triggermybuttonclickkedevn,简单地触发PictoPanelViewModel中的事件
- 将triggermybuttonclickkedevn关联到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);
}
在MainViewModel(在你有PictoPanelViewModel实例的地方):
aPictoPanelViewModel.myButtonClickedEvn += new System.EventHandler (myButtonClickedInPictoPanelViewModel);