2011-06-12 82 views
1

我有一個DataGrid並填寫時加載的窗口,像這樣:添加一個新行的DataGrid(WPF)

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

,當我試圖通過這個在運行時添加一個新行代碼:

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

我得到這個錯誤:

Operation is not valid while ItemsSource is in use. Access and modify elements with ItemsControl.ItemsSource instead.

我怎麼能在運行時添加一個新行?

回答

1

如果您以ItemsSource的形式提供Items集合中的項目,則無法修改其中的項目。您應該添加項目到您的list(與INotifyCollectionChanged實現的,或者你應該首先填充Items財產通過Add方法

錯誤說明是很清楚,是不是

+0

注意,在大多數情況下,最好的方式得到'INotifyCollectionChanged'是使用'的ObservableCollection ;. – svick 2011-06-12 09:20:09

0

嘗試做這樣的事情:? VAR行= dataGrid.NewRow();

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

InitializeComponent(); 
+0

你真的提出調用'InitializeCo之前'dataGrid'互動mponent'? – Snowbear 2011-06-12 19:34:36