我只想添加一个新行,我的数据源位于我需要进行处理的对象中。对于wpf datagrid我需要类似下面的东西......
DataRow row = dataTable.NewRow();
foreach (NavItem item in record.Items)
{
row[item.FieldNo.ToString()] = item.RecordValue;
}
dataTable.Rows.Add(row);
答案 0 :(得分:3)
您应该使用ObservableCollection<NavItem>
作为数据网格源。然后只需将新元素添加到集合中,就会将其添加到数据网格中。
请参阅此MSDN article。
答案 1 :(得分:0)
我不知道这是不是正确的解决方案,但是在绝望中我想到了这样的事情:
foreach (NavField field in this.Fields)
{
DataGridTextColumn column = new DataGridTextColumn();
column.Header = field.FieldNo.ToString();
//Some other logic
// Hide non active and hidden fields
if (!field.Active || !field.Show)
column.Visibility = System.Windows.Visibility.Collapsed;
grid.Columns.Add(column);
}
然后我将datatable添加为itemssource:
this.dataGridLines.ItemsSource = dataTable.DefaultView;
如果我直接设置数据表,它不关心数据表中的列并自动生成自己的列,不知道为什么..