我是一个完整的新手到WPF和MVVM,所以我提前道歉,如果这个查询是相当简单的。 我在网上搜索和还没有能够找到任何这符合我的要求。 Hense为什么我在这里!
目前我正在试图实现从使用LINQ数据库查询的数据表。 这是我运行查询:
DataContext connection = new DataContext();
var getTripInformation = from m in connection.tblTrips
where m.TripDate > DateTime.Today
select new { m.TripID, m.TripName, m.TripDate, m.ClosingDate, m.PricePerAdult, m.PricePerChild, m.Status };
填补我与我预期的相关信息变种。
现在,我希望能够做的是使用一个DataGrid在我看来这diplay。 任何人都可以帮助我呢?
简而言之,你将有你的视图和视图模型。 该视图模型将需要实现INotifyPropertyChanged接口,方便视图结合。 这只是提供当您更改您的视图模型的属性时引发的事件。 然后,您的视图将绑定到视图模型的属性。 这工作只要视图的DataContext设置为视图模型实例。 下面,这是在后台代码完成,但很多纯粹主义者这直接在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,则需要明确列出列,什么财产,他们将映射到。