将DataGrid绑定到WPF中的通用列表的最佳方法

时间:2010-12-03 10:41:38

标签: c# wpf data-binding

我正在尝试将DataGrid绑定到WPF中的通用列表。

以下代码导致列表中每行数据的空行(即,如果我有5行,则显示5行,但不显示单元格中的任何数据):

List<DataRow>  DataBindingSource = GuestList.Where(row =>
  (row.Field<long>("FK_GROUP_ID") == Int64.Parse(cmbGroup.SelectedValue.ToString())) &&
  (row.Field<long>("FK_AGE_GROUP_ID") != (int)L_Age_Group.Child))
  .ToList();

gvwAddultDetails.ItemsSource = DataBindingSource;

如果我将对象列表转换为DataTable,它就可以工作(显示数据)。例如:

List<DataRow> DataBindingSource = GuestList.Where(row =>
  (row.Field<long>("FK_GROUP_ID") == Int64.Parse(cmbGroup.SelectedValue.ToString())) &&
  (row.Field<long>("FK_AGE_GROUP_ID") != (int)L_Age_Group.Child))
  .ToList();

gvwAdultDetails.ItemsSource = DataBindingSource.CopyToDataTable().DefaultView;

但如果我有List<DataRow>,我该如何将其转换为DataTable

在WPF中将DataGrid绑定到“列表”的最佳做法是什么?

1 个答案:

答案 0 :(得分:5)

DataGrid绑定到WPF中的通用列表的一种方法:

<强> MainWindow.xaml.cs

Grid.DataContext = DataBindingSource;

<强> MainWindow.xaml

<DataGrid
  AutoGenerateColumns="True"
  ItemsSource="{Binding}"
  Name="Grid" />

但它可能无法与DataRow一起使用,因为在WPF中,如果要绑定某些内容,则需要将其作为属性

- 其他想法 -

以下是将通用列表转换为DataTable的方法:

如何将DataGrid绑定到WPF中的通用列表:

特别是(WPF中的一个很棒的功能):