Come si associa il risultato della query di Dapper a WPF DataGrid

.net c# dapper data-binding wpf

Domanda

Ecco il mio codice. Produce una griglia vincolata con il numero corretto di righe, tuttavia le celle sono vuote .

XAML

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

Codice dietro

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

Risposta accettata

Dai documenti , la tua sintassi lì - cn.Query("sql") - restituisce un elenco di oggetti con tipo IEnumerable<dynamic> ( IEnumerable<dynamic> ). Ciò non funzionerà per le colonne automatiche DataGrid, che cercano i membri concreti per generare le sue colonne. Suggerirei di creare una semplice classe di entità per SomeTable per mappare le proprietà e quindi usare cn.Query<SomeTableEntity>("select * from SomeTable"); .


Risposta esperta

Se si utilizza la versione non generica di Query, restituisce una rappresentazione dinamica dei dati. L'API dinamica non è adatta alla maggior parte dei binding di dati dell'interfaccia utente. Sarebbe preferibile utilizzare l'API Query<T> generica per caricare i dati in tipi che hanno proprietà definite.

Con una spinta completa , sarebbe anche teoricamente possibile implementare ITypedList sui dati ed esporre le proprietà di conseguenza. Ma questo è un bel po 'di lavoro per non tanto guadagno.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow