简而言之,您将拥有 View 和 ViewModel。ViewModel 需要实现 INotifyPropertyChanged 接口以促进视图绑定。这只是提供了一个在您更改 ViewModel 上的属性时引发的事件。然后,您的 View 将绑定到 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}"
...
/>
如果您AutoGenerateColumns = 'True'
在 DataGrid 上设置,它将为绑定项类型的每个公共属性创建一行。如果将此值设置为 false,则需要显式列出列以及它们将映射到的属性。