SI 假设 MainViewModel 至少在瞬间具有对 PictoPanelViewModel 的引用,并且在最坏的情况下,当时尚未创建按钮。如果是这种情况,我会:
- 将事件 myButtonClickedEvn 添加到 PictoPanelViewModel
- 创建一个 TriggerMyButtonClickedEvn 方法,它只是触发 PictoPanelViewModel 中的事件
- 将 TriggerMyButtonClickedEvn 关联到 myButton.Click
- 在 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);