2010-12-08 9 views
0

私は最初の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)) { ... } 

もっと良い選択肢がありますか?私はこれを行う方法があるはずだと思うが、私はまだこれ以上調査しなかった。

ご意見ありがとうございます。

答えて

1

Event Aggregatorパターンを確認してください。そこにはかなりの実装があります。 MVVMフレームワーク(https://stackoverflow.com/questions/1280462/what-mvvm-framework-are-you-usingWhat framework for MVVM should I use?)を使用している場合は、実装されている可能性もあります。

+0

あなたの答えをありがとう。私はEvent Aggregatorを見ていきますが、それはかなりいいと思われ、より柔軟になります。 MVVM Foundationフレームワーク(ObservableObjectとPropertyObserver)からいくつかのクラスを取り上げました。このクラスはフレンドリーさのリファクタリングに関する私の2番目の問題を解決します。 – dSebastien

関連する問題