次の 2 つの 1 時間のビデオでは、MVVM パターンを使用して、Silverlight と WPF の両方で簡単なクイズ アプリケーションを作成する方法を順を追って説明しています。
Silverlight での Model-View-ViewModel の実装
WPF で Model-View-ViewModel を実装する
これらについて私を驚かせたのは、たとえば、DataBinding の使用方法など、それらが構造的にどれほど異なるかということです。
Silverlight アプローチでは、 Viewの DataContext をViewModelのObservableCollectionに設定します。
<views:QuestionView x:Name="QuestionDataView" />
QuestionViewModel qdata = new QuestionViewModel();
qdata.FetchQuestions();
QuestionDataView.DataContext = qdata.Questions;
WPF アプローチでは、 Windowの DataContext をViewModel自体に設定します。
<view:QuizView Margin="4" />
base.DataContext = new QuizViewModel(Quiz.Create());
私が見ているすべての MVVM の例は、わずかに新しいバリエーションで DataContext バインディングを行っているように見えます。
DataContext を何かにバインドすることを決定したとき、何が頭に浮かびますか? Window / View / ListBox / etc.の DataContextをObservableCollection / ModelView / etc.にバインドするのはなぜですか? ここでの利点、欠点、戦略は何ですか?
任意の入力をいただければ幸いです。