我正在尝试从Button中触发一个事件,该事件将被捕获在另一个类中,而不会将此类作为我的类中的实例。我能这样做吗?
让我说我的按钮是在PictoPanelViewModel中创建的,而且这个类没有对MainViewModel的任何引用,我希望myButton触发一个事件来调用MainViewModel中的方法。
我尝试了myButton.Command和myButton.Click,但这两个需要MainViewModel的引用,所以我可以调用它。
我现在有点困惑。
修改 按钮是在PictoPanelViewModel
中动态创建的答案 0 :(得分:1)
SI假设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);