Wie binden Sie das Dapper-Abfrageergebnis an WPF DataGrid?

.net c# dapper data-binding wpf

Frage

Hier ist mein Code. Es erzeugt ein gebundenes Gitter mit der richtigen Anzahl von Zeilen, die Zellen sind jedoch leer .

XAML

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

Code dahinter

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

Akzeptierte Antwort

Aus den Docs gibt Ihre Syntax dort - cn.Query("sql") - eine Liste dynamisch dynamisierter Objekte zurück ( IEnumerable<dynamic> ). Das funktioniert nicht für die DataGrid-Autospalten, die nach konkreten Mitgliedern suchen, um ihre Spalten zu generieren. Ich würde vorschlagen, eine einfache Entity-Klasse für SomeTable zu erstellen , um die Eigenschaften cn.Query<SomeTableEntity>("select * from SomeTable"); und dann cn.Query<SomeTableEntity>("select * from SomeTable"); .


Expertenantwort

Wenn Sie die nicht generische Version von Query verwenden, wird eine dynamische Darstellung der Daten zurückgegeben. Die dynamische API ist für die meisten UI-Datenbindungen nicht geeignet. Es wäre vorzuziehen, die generische API Query<T> zu verwenden, um die Daten in Typen mit definierten Eigenschaften zu laden.

Bei einem vollständigen Push wäre es theoretisch auch möglich, ITypedList auf den Daten zu implementieren und die Eigenschaften entsprechend darzustellen. Aber das ist ziemlich viel Arbeit für nicht so viel Gewinn.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow