Cómo se vincula el resultado de la consulta Dapper a WPF DataGrid

.net c# dapper data-binding wpf

Pregunta

Aquí está mi código. Produce una cuadrícula encuadernada con el número correcto de filas, sin embargo, las celdas están vacías .

XAML

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

Código detrás

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

Respuesta aceptada

Desde los documentos , su sintaxis allí - cn.Query("sql") - devuelve una lista de objetos de IEnumerable<dynamic> ( IEnumerable<dynamic> ). Eso no funcionará para las columnas automáticas de DataGrid, que busca miembros concretos para generar sus columnas. Sugeriría crear una clase de entidad simple para SomeTable para mapear las propiedades y luego usar cn.Query<SomeTableEntity>("select * from SomeTable"); .


Respuesta experta

Si usa la versión no genérica de Query, devuelve una representación dinámica de los datos. La API dinámica no es adecuada para la mayoría de los enlaces de datos UI. Sería preferible usar la API genérica Query<T> para cargar los datos en tipos que tienen propiedades definidas.

En un impulso completo , también sería teóricamente posible implementar ITypedList en los datos y exponer las propiedades en consecuencia. Pero eso es mucho trabajo para ganar no tanto.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow