ViewModel には、入力されたモデル オブジェクトであるプロパティがあります。ここでそれらを割り当てて、ビューがデータを表示できるようにします。
public ParentModel
{
get { return parentModel; }
private set
{
if (parentModel != value)
{
parentModel = value;
RaisePropertyChanged("ParentModel");
}
}
}
public int SelectedItemIndex
{
get { return selectedItemIndex; }
set
{
if (selectedItemIndex != value)
{
selectedItemIndex = value;
RaisePropertyChanged("SelectedItemIndex");
}
}
}
View には、DataGrid、ComboBox など、データを表示するためのオブジェクトが含まれます。ItemTemplates を使用してデータの表示方法をカスタマイズできますが、重要なbind
のはコントロールに対するデータです。これにより、ViewModel のみから View へ (OneWay)、View から ViewModel へ (OneWayToSource)、またはその両方 (TwoWay) のいずれかの方向モードでデータを流すことができます。したがって、ユーザーが選択したインデックスを変更すると、以下の TwoWay に設定されているため、データは ViewModel に戻ります。ここでの ItemsSource は OneWay として設定されているため、ViewModel のみがビューのそれを変更できます。
<DataGrid ItemsSource="{Binding Path=ParentModel.Items, Mode=OneWay}"
SelectedIndex="{Binding Path=SelectedItemIndex, Mode=TwoWay}" />
ViewModel が BusinessLogic と対話する必要がある場合は、データを渡すだけです。別の ViewModel が情報を必要とする場合は、フレームワークで利用可能な概念を使用する必要があります。EventAggregator (Prism)、お互いの知識がないため、データを渡します。
MVVM のコア コンセプトは、このようなモデルと WPF コントロールのプロパティのバインディングです。パワーとデザインを最大限に活用するには、もっと読みたいと思うと思います。StackOverflow には非常に役立つ質問/回答がいくつかあります。MSDN にはいくつかの優れたチュートリアルがあります。