2010-12-03 11 views
6

J'essaye de lier un DataGrid à une liste générique dans WPF.Meilleur moyen de lier DataGrid à la liste générique dans WPF

Les résultats de code suivant en lignes vides pour chaque ligne de données dans ma liste (si j'ai 5 lignes, il montre 5 lignes, mais ne montre aucune donnée dans les cellules):

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; 

Si je convertis ma liste d'objets en DataTable, cela fonctionne (affiche des données). Par exemple:

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; 

Mais si j'avais un List<DataRow>, comment pourrais-je le convertir en DataTable?

Quelle est la meilleure pratique pour lier un DataGrid à une liste dans WPF?

Répondre

5

Une façon de lier DataGrid à la liste générique WPF:

MainWindow.xaml.cs

Grid.DataContext = DataBindingSource; 

MainWindow.xaml

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

Mais il a probablement gagné ne fonctionne pas avec DataRow, parce que dans WP F, si vous souhaitez lier à quelque chose, il doit être une propriété.

- AUTRES PENSEES -

Voici comment vous pouvez convertir une liste générique à un DataTable:

Comment lier DataGrid à la liste générique WPF:

Surtout (une grande fonctionnalité dans WPF):