2011-07-27 17 views
0

このクラスをクラス内のインスタンスとして持つことなく、別のクラスで捕捉されるイベントを、ボタンからトリガーしようとしています。それをしてもいいですか?ボタン別のクラスで捕捉されるイベントまたはコマンドをトリガーする

私のボタンがPictoPanelViewModelで作成され、このクラスがMainViewModelへの参照を持っていないとします。私は、myButtonがMainViewModel内のメソッドを呼び出すイベントをトリガーするようにします。

私はmyButton.CommandとmyButton.Clickを試しましたが、これらの2つはMainViewModelの参照が必要なので、私はそれを呼び出すことができます。

私はちょっと混乱しています。

EDIT ボタン

+0

MainViewModelがPictoPanelViewModelへの参照を持っていますか? – dbugger

+0

@dbuggerはいそうです。 – raym0nd

答えて

1

SIボタンが作成されていないことは、最悪の場合であると、MainViewModelが少なくとも一瞬PictoPanelViewModelへの参照を持っていると仮定し、PictoPanelViewModelに動的に作成されまだその時。このような場合は、私は希望:

  1. は単純で、MainViewModelで
  2. をmyButton.ClickするPictoPanelViewModel
  3. 准TriggerMyButtonClickedEvnでイベントをトリガーする方法TriggerMyButtonClickedEvnを作成PictoPanelViewModel
  4. をイベントmyButtonClickedEvnを追加あなたのクラスがPictoPanelViewModelを見る時に、あなたのメソッドを新しく作成されたイベントに関連付けます。

これはすべてこのようなコードで翻訳されます。 PictoPanelViewModelで

:MainViewModelで

 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); 
    } 

(あなたがPictoPanelViewModelのインスタンスを持っている場所で):

 aPictoPanelViewModel.myButtonClickedEvn += new System.EventHandler (myButtonClickedInPictoPanelViewModel); 
関連する問題