Добавление новой строки в DataGrid во время выполнения (WPF)

#wpf #data-binding #datagrid #wpfdatagrid

#wpf #привязка данных #сетка данных #wpfdatagrid

Вопрос:

У меня есть сетка данных, и я заполняю ее при загрузке окна, вот так:

 private void Window_Loaded(object sender, RoutedEventArgs e) {
    var list = DbService.GetStuffsFull();
    dataGrid.ItemsSource = list;
}
  

и когда я пытаюсь добавить новую строку во время выполнения с помощью этого кода:

 Stuff item = new Stuff();
dataGrid.Items.Add(item);
  

Я получаю эту ошибку:

Операция недопустима, пока используется ItemsSource. Доступ к элементам и их изменение с помощью ItemsControl.Вместо этого используется ItemsSource.

как я могу добавить новую строку во время выполнения?

Ответ №1:

Вы не можете изменять элементы в Items коллекции, если вы предоставили ее как ItemsSource . Вы должны либо добавить элемент в свое list INotifyCollectionChanged реализованным), либо вы должны изначально заполнить Items свойство с помощью Add метода.

Описание ошибки довольно четкое, не так ли?

Комментарии:

1. Обратите внимание, что в большинстве случаев лучший способ получить INotifyCollectionChanged — использовать `ObservableCollection;.

Ответ №2:

попробуйте сделать что-то вроде этого: var row = DataGrid.newRow();

     dataGrid.Rows.Add(row);
    row["column1"] = "data1";  
    row["column2"] = "data2";
    row["column3"] = "data3";

InitializeComponent();
  

Комментарии:

1. Вы действительно предлагаете взаимодействовать с dataGrid перед вызовом InitializeComponent ?