私は最初のSilverlightプロジェクト(Silverlight 4.0)を開始しようとしており、最良のアプローチなどの研究に時間を費やしています。MVVMを使用する予定で、ここ数日はナビゲーションを調べています。
まず、MVVMの例の多くがMainPageをビュー/ビューモデルとして実装していないことに気づきました。MainPageにはナビゲーションフレームとURIマッピングが含まれており、ビュー/ビューモデルに従うページに移動します。メインページがビュー/ビューモデルとして実装されていないのは、MVVMとナビゲーションサービスを使用する場合の標準ですか?たとえば、Silverlight 4トレーニングキットにはイベントマネージャーのサンプルが含まれており、メインページには多くのコードが含まれています。つまり、NavigateedやNavigatedFailedなどのナビゲーションイベントを処理します。ただし、他のすべてのページは表示/表示モデルです。
次に、ナビゲーションサービスを使用すると、ナビゲーションを変更するロジックがビューによって実行され、ビューモデルによって制御されなくなります(これは、MVVMの背後にあるいくつかの考え方に反します)。ネット上のいくつかのアプローチは、ViewModelからViewへのメッセージングを使用するか、NavigationサービスをViewModelとそこで制御されるナビゲーションに渡します。これらのアプローチのどちらかが他よりも優れていますか?
理想的には、メインページがView / ViewModelの後に続き、ViewModelがナビゲーションを制御し、ビューにコードビハインドがない例を見つけたいと思います。お願いしすぎですか??!
参考までに、PRISMまたはMVVMLightを使用していません。
乾杯