Set*_*eno 7 .net c# data-binding wpf dapper
这是我的代码.它生成具有正确行数的绑定网格,但单元格为空.
XAML
<DataGrid
Name="grid"
ItemsSource="{Binding}"
AutoGenerateColumns="True" />
Run Code Online (Sandbox Code Playgroud)
代码背后
grid.DataContext = cn.Query("select * from SomeTable");
Run Code Online (Sandbox Code Playgroud)
所以我猜答案是:这是不可能的.这是一个hacky解决方法.
...
var items = cn.Query("select * from SomeTable");
grid.DataContext = ConvertToDataTable(items);
}
public DataTable ConvertToDataTable(IEnumerable<dynamic> items) {
var t = new DataTable();
var first = (IDictionary<string, object>)items.First();
foreach (var k in first.Keys)
{
var c = t.Columns.Add(k);
var val = first[k];
if (val != null) c.DataType = val.GetType();
}
foreach (var item in items)
{
var r = t.NewRow();
var i = (IDictionary<string, object>)item;
foreach (var k in i.Keys)
{
var val = i[k];
if (val == null) val = DBNull.Value;
r[k] = val;
}
t.Rows.Add(r);
}
return t;
}
Run Code Online (Sandbox Code Playgroud)