添加一个新行的DataGrid(WPF)
问题描述:
我有一个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.
我怎么能在运行时添加一个新行?
答
如果您以ItemsSource
的形式提供Items
集合中的项目,则无法修改其中的项目。您应该添加项目到您的list
(与INotifyCollectionChanged
实现的,或者你应该首先填充Items
财产通过Add
方法
错误说明是很清楚,是不是
答
尝试做这样的事情:? 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
注意,在大多数情况下,最好的方式得到'INotifyCollectionChanged'是使用'的ObservableCollection ;. – svick 2011-06-12 09:20:09