Comment lier le résultat de la requête Dapper à WPF DataGrid

.net c# dapper data-binding wpf

Question

Voici mon code. Il produit une grille liée avec le nombre correct de lignes, mais les cellules sont vides .

XAML

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

Code derrière

grid.DataContext = cn.Query("select * from SomeTable");

Réponse acceptée

A partir de la documentation , votre syntaxe - cn.Query("sql") - renvoie une liste d'objets de type dynamique ( IEnumerable<dynamic> ). Cela ne fonctionnera pas pour les auto-colonnes DataGrid, qui recherchent des membres concrets pour générer ses colonnes. Je suggère de créer une classe d'entité simple pour que SomeTable mappe les propriétés et utilise ensuite cn.Query<SomeTableEntity>("select * from SomeTable"); .


Réponse d'expert

Si vous utilisez la version non générique de Query, elle renvoie une représentation dynamique des données. L'API dynamique ne convient pas à la plupart des liaisons de données d'interface utilisateur. Il serait préférable d'utiliser l'API Query<T> générique pour charger les données dans des types ayant des propriétés définies.

Lors d' une poussée complète, il serait également théoriquement possible de mettre en œuvre ITypedList sur les données et exposer les propriétés en conséquence. Mais c'est beaucoup de travail pour pas beaucoup de gain.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi