Можно ли программно добавить строку в сетку данных 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 и сам генерирует свои собственные столбцы, не знаю почему..

Другие вопросы по тегам