我正在尝试将项添加到DataGrid,这与我使用x.Items.Add(x)时不同;对于ListView,它只显示空行。这个DataGrid一次只显示1行,并且必须是可编辑的,如果您认为有更好的方法而不是DataGrid,那么我愿意接受建议。我已经确定值的数量与列的数量匹配,这是一个问题,但似乎我仍然没有接近解决这个问题。我已经尝试过阅读许多类似的问题,但没有一个能解决我的问题,我在哪里错了?
rw_container是我用来将DataGrid插入的空白网格
private void AddGrid<T>(T obj) where T : ICategory
{
data = new DataGrid();
PropertyInfo[] props = typeof(T).GetProperties();
foreach (PropertyInfo x in props)
{
data.Columns.Add(new DataGridTextColumn() { Header = x.Name, Width = 100 });
}
//How to add the rows here?
rw_container.Children.Add(data);
}
答案 0 :(得分:0)
缺少一些东西:
DataGridColumns需要Binding
属性:
new DataGridTextColumn { Header = x.Name, Width = 100, Binding = new Binding(x.Name) }
和DataGrid需要项目:
data.Items.Add(obj);
然而,更简单的方法是设置ItemsSource并让Datagrid自动生成列:
{
data = new DataGrid { ItemsSource = new[] { obj } };
rw_container.Children.Add(data);
}
这样DataGrid甚至可以为bool
属性创建DataGridCheckBoxColumns