簡単に言えば、View と ViewModel が作成されます。ビュー バインディングを容易にするために、ViewModel は INotifyPropertyChanged インターフェイスを実装する必要があります。これは、ViewModel のプロパティを変更したときに発生するイベントを提供するだけです。ビューは、ViewModel のプロパティにバインドされます。これは、ビューの DataContext が ViewModel インスタンスに設定されている限り機能します。以下では、これはコード ビハインドで行われますが、多くの純粋主義者はこれを XAML で直接行います。これらのリレーションシップが定義されたら、LINQ クエリを実行して ObservableCollection (アイテムが内部で追加/削除されたときに INotifyPropertyChanged も実装します) にデータを入力すると、グリッドにデータが表示されます。
ビューモデル
public class MyViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private ObservableCollection<MyRecord> _records = null;
public ObservableCollection<MyRecord> Records
{
get { return _records; }
set
{
if( _records != value )
{
_records = value;
if( this.PropertyChanged != null )
{
this.PropertyChanged( this, new PropertyChangedEventArgs( "Records" ) );
}
}
}
}
public MyViewModel()
{
this.Records = new ObservableCollection<MyRecord>();
this.LoadData();
}
private void LoadData()
{
// this populates Records using your LINQ query
}
表示 (コード ビハインド)
public class MyView : UserControl
{
public MyView()
{
InitializeControl();
// setup datacontext - this can be done directly in XAML as well
this.DataContext = new MyViewModel();
}
}
表示 (XAML)
<DataGrid
ItemsSource="{Binding Path=Records, Mode=OneWay}"
...
/>
DataGrid で設定AutoGenerateColumns = 'True'
すると、バインドされたアイテム タイプのパブリック プロパティごとに行が作成されます。この値を false に設定した場合は、列とそれらがマップされるプロパティを明示的にリストする必要があります。