私は最初のC#/ WPFプロジェクト(私はFlex/Asの経験を持つJava/Web開発者です)で作業しています。 MVVMのパターンは、私が学習曲線を登り始めたので移動するように思えました...MVVMパターン使用時のViewModelオブジェクト間の状態変更を通知する最も良い方法
関連するViewModelオブジェクト間で状態の変更を通知する方法を検討しています。
私は、MyTreeViewModelによって公開されているReadOnlyCollectionにバインドされているTreeViewを含むUserControlを持っています。
SomethingViewModelはINotifyPropertyChangedを実装し、 'IsSelected'プロパティが変更されたときにイベントを生成します。
MyTreeViewModelには、SomethingViewModelのPropertyChangedイベントにアタッチされたイベントハンドラがあり、それが管理する「CurrentlySelectedElement」というプロパティを更新します。
MyTreeViewModelもINotifyPropertyChangedを実装し、 'CurrentlySelectedElement'プロパティが変更されたときにイベントを生成します。
最後に、選択変更を処理する別のViewModelクラスにイベントハンドラがあります。
これはC#/ WPFでこれに近づく正しい方法ですか?
また、イベント処理メソッドでは、Stringsでプロパティ名を使用するのは本当に好きではありません。これは私にとってはリファクタリングが難しいようです。今のところ、私はイベントハンドラメソッドで次のように使用できるように、プロパティ名を静的な文字列として公開しています。
if(SomeViewModel.PROPERTY_IS_SELECTED.Equals(e.PropertyName)) { ... }
もっと良い選択肢がありますか?私はこれを行う方法があるはずだと思うが、私はまだこれ以上調査しなかった。
ご意見ありがとうございます。
あなたの答えをありがとう。私はEvent Aggregatorを見ていきますが、それはかなりいいと思われ、より柔軟になります。 MVVM Foundationフレームワーク(ObservableObjectとPropertyObserver)からいくつかのクラスを取り上げました。このクラスはフレンドリーさのリファクタリングに関する私の2番目の問題を解決します。 – dSebastien