Question

Dans un contrôle Telerik, j'ai pu lier un DataTable directement au ItemSource, mais lorsque je suis passé au Codeplex WPFToolkit Datagrid:

<dg:DataGrid Name="theGrid"/>
---
theGrid.ItemsSource = dt;

Je reçois cette erreur:

Cannot implicitly convert type 'System.Data.DataTable' to 'System.Collections.IEnumerable'.

Comment puis-je lier le DataGrid au <=> <=>?

Était-ce utile?

La solution

Vous devrez projeter vos données dans quelque chose qui implémente IEnumerable, comme cela est attendu par le DataGrid. La grille est une implémentation différente de la version Telerik, il est donc difficile d’attendre la même fonctionnalité des deux.

Autres conseils

Je trouve que le moyen le plus simple est:

myDataGrid.ItemsSource = myDataTable.DefaultView;

car DefaultView implémente IEnumerable

J'assume que le support pour cela sera ajouté à l'avenir, mais pour l'instant, vous pouvez utiliser l'implémentation de IListSource sur DataTable. Appelez la méthode GetList() et utilisez-la comme source de données. Il s’agit d’une implémentation d’interface explicite, vous devez donc convertir:

var data = (myDataTable as IListSource).GetList();

Dans ce cas, je lie ItemsSource à DataContex en XAML, c'est-à-dire

.
ItemsSource={Binding} 

puis dans codebehind je fais

theGrid.DataContext = dt

Cela aidera.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top