Можно ли программно добавить строку в сетку данных WPF?
Я просто хочу добавить новую строку, у меня есть источник данных в объектах, в которых мне нужно выполнить некоторую обработку. мне нужно что-то вроде ниже для wpf datagrid...
DataRow row = dataTable.NewRow();
foreach (NavItem item in record.Items)
{
row[item.FieldNo.ToString()] = item.RecordValue;
}
dataTable.Rows.Add(row);
2 ответа
Вы должны использовать ObservableCollection<NavItem>
как источник данных. Затем простое добавление нового элемента в вашу коллекцию добавит его в сетку данных.
Смотрите эту статью MSDN.
Я не знаю, правильное ли это решение, но я пришел в отчаяние к чему-то вроде этого:
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;
Если я устанавливаю datatable напрямую, он не заботится о столбцах из datatable и сам генерирует свои собственные столбцы, не знаю почему..