Wie generiere ich dynamisch Spalten in einem WPF-DataGrid?

Ich versuche, die Ergebnisse einer Abfrage in einem WPF-Datagrid anzuzeigen. Der ItemsSource-Typ, an den ich gebunden bin, istIEnumerable<dynamic>. Da die zurückgegebenen Felder erst zur Laufzeit ermittelt werden, kenne ich den Datentyp erst, wenn die Abfrage ausgewertet wird. Jede "Zeile" wird als zurückgegebenExpandoObject&nbsp;mit dynamischen Eigenschaften, die die Felder darstellen.

Das war meine HoffnungAutoGenerateColumns&nbsp;(wie unten) wäre in der Lage, Spalten aus einem zu generierenExpandoObject&nbsp;wie es mit einem statischen Typ tut, aber es scheint nicht zu.

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

Gibt es sowieso, um dies deklarativ zu tun, oder muss ich mich zwingend mit einem C # verbinden?

BEARBEITEN

Ok, das bringt mir die richtigen Spalten:

// ExpandoObject implements IDictionary<string,object> 
IEnumerable<IDictionary<string, object>> rows = dataGrid1.ItemsSource.OfType<IDictionary<string, object>>();
IEnumerable<string> columns = rows.SelectMany(d => d.Keys).Distinct(StringComparer.OrdinalIgnoreCase);
foreach (string s in columns)
    dataGrid1.Columns.Add(new DataGridTextColumn { Header = s });

Nun muss nur noch herausgefunden werden, wie die Spalten an die IDictionary-Werte gebunden werden.