0

私のWPFアプリケーションには、いくつかのモデルとビューモデルがあります。例を考えてみましょう。

私の変更のSurfaceConditionプロパティ。RoadViewmodelこれにより、(非同期で)Wheel自分のプロパティの変更がトリガーされるようにしますCarViewmodel

私はいくつかの解決策を考えることができますが、この特定の問題にはよく認識されている解決策があると感じています。メッセージを使用しますか?RoadViewmodelに参照を配置しCarViewmodel、プロパティを介して更新をトリガーしますか?ビューモデルをマージしますか?WPFの達人、教えてください!

4

1 に答える 1

0

関心の分離(RoadViewModelはCarViewModelについて知っている)/ DRYの原則(RoadViewModelはCarViewModelを更新するか、2つのクラスをマージする必要がある)に違反するため、提案する最後の2つのソリューションは間違いありません。

一方、メッセージは、ここでは優れた、分離されたソリューションのように見えます。利用可能な実装がいくつかあります。たとえば、PrismにはEventAggregatorクラスがあり、MVVM ToolkitにはありますMessageBus。または、「MVVMイベントバス」などの用語を検索します。これで、選択するものが何であれ、これらのクラスを直接使用せず、代わりにインターフェースを渡すことが常に良いことを知ってください。たとえば、Prismでは、IEventAggregatorインターフェイスのみを使用するようにビューモデルをプログラムします。実際のアプリケーションでは、実際のEventAggregatorのインスタンスを渡しますが、単体テストでは、モックを渡します。

于 2012-10-29T09:06:22.743 に答える