2016-04-04 10 views
-1

イベントを作成して、別のViewModelにサブスクライブする必要があります。イベントハンドラは、最初のViewModelで常にnullになります。 は最初のViewModelで私はイベントを宣言し、EventHandlerは常にnullですか?

第二のViewModelで
 if (EditSearchChanged != null) 
     { 
      EditSearchChanged(this, null); 
     } 

として

public event EventHandler EditSearchChanged; 

と上げを次のように育った私は、最初のビューモデルのプロパティを宣言しています。

private EditTileViewModel editTileVM; 

    public EditTileViewModel EditTileVM 
    { 
     get 
     { 
      return editTileVM ?? (editTileVM = new EditTileViewModel()); 
     } 
     set 
     { 
      editTileVM = value; 
      RaisePropertyChanged(); 
     } 
    } 

EditTileVM.EditSearchChanged += EditTileVM_EditSearchChanged; 

    private void EditTileVM_EditSearchChanged(object sender, EventArgs e) 
    { 
     this.EditTileVM = (sender as EditTileViewModel); 
    } 

デバッガ結果 enter image description here

+0

ここEditSearchChanged – subminer

+0

はライン、それが可能ですnullである 'EditTileVM.EditSearchChanged + = EditTileVM_EditSearchChanged;'決して決して実行されないので、決して設定されませんか?多少のコード​​を提供するかもしれませんか? – mnemonic

+1

'EditTileVM.EditSearchChanged + = EditTileVM_EditSearchChanged'にデバッガを置き、起動されているかどうか確認できますか? – Rohit

答えて

0

を次のように次のプロパティにViewModelの別の新しいインスタンスを作成するとそれが起こるイベントをサブスクライブ:

private EditTileViewModel editTileVM; 
public EditTileViewModel EditTileVM 
{ 
    get 
    { 
     return editTileVM ?? (editTileVM = new EditTileViewModel()); 
    } 
    set 
    { 
     editTileVM = value; 
     RaisePropertyChanged(); 
    } 
} 

だから、2つのinsta nsのEditViewModel

私はあなたがプリズムの枠組みからviewModels 2間EventAggregator patternを使用することをお勧め:simplified Event Aggregator pattern程度レイチェル・リムの非常に良いチュートリアルを参照してください、

// Subscribe 
eventAggregator.GetEvent<CloseAppliactionMessage>().Subscribe(ExitMethod); 

// Broadcast 
eventAggregator.GetEvent<CloseAppliactionMessage>().Publish(); 

してください。

MVVM Light messengerを使用します。

//Subscribe 
Messenger.Default.Register<CloseAppliactionMessage>(ExitMethod); 

// Broadcast 
Messenger.Default.Send<CloseAppliactionMessage 
+0

@subminer質問をしてください。私の返事があなたに役立つと感じたら、私の返事を答えとしてマークして、将来の他の人の検索を簡単にすることができます。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-workをご覧ください。 – StepUp

関連する問題