SIは、MainViewModelが少なくとも一瞬PictoPanelViewModelへの参照を持っていること、そして最悪の場合、その時点でボタンがまだ作成されていないことを前提としています。これが事実であるならば、私はそうするでしょう:
- イベントmyButtonClickedEvnをPictoPanelViewModelに追加します
- PictoPanelViewModelでイベントをトリガーするだけのメソッドTriggerMyButtonClickedEvnを作成します
- 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);