少し調べてみましたが、もっと簡単な答えが見つからないことに驚いています。私は単純な MVVM モデルに従っており、パブリック プロパティ (get/set) によって公開されるフィールドとして別のビュー モデル (「childVM」) を保持するビュー モデル (「parentVM」) を持っています。私が抱えている問題は、親の初期化子で子ビュー モデルの propertychanged イベントをサブスクライブしようとしていることです。ただし、新しい childVM が設定されると、イベント ハンドラは失われます。
public parentVM : INotitifyPropertyChange{
private _childVM = new childVM();
public parentVM(){
_childVM.PropertyChanged += someHandler;
}
public childVM {
get{
return _childVM;
}
set{
_childVM = value;
//EVENTHANDLERS ARE NOW GONE
}
}
....
}
既存のイベント ハンドラーを新しいオブジェクトに転送する方法はありますか?
これは簡単な例です。私は単純に行を移動できることを知っています:
_childVM.PropertyChange += someHandler;
ただし、これはイベントをサブスクライブする外部オブジェクトでは機能しません。そのような場合、オブジェクトが何であり、ハンドラーが何であるかを知ることはまずありません。
おそらく、+= eventHandler からより手動の AddHander メソッドに内部的に変更する List を参照することによる回避策があり、将来の参照のために List にデータが入力されます。この時点でアウトロードを考えているだけです。
PS 例に構文エラーがある場合は、ご容赦ください。私はインテリセンスを持っておらず、これは実際のコードではありません...要点を伝えようとしているだけです。