WPF DataGrid编辑难度(InvalidOperationException)

时间:2015-07-22 15:19:26

标签: c# wpf datagrid observablecollection invalidoperationexception

我有一个DataGrid我正在填充来自ObservableCollection<ObservableCollection<T>>的信息,其中T是我的一个实现IEditableObject的对象。

DataGrid正确地填写了我需要的信息。问题是当我去编辑一个盒子时,我得到一个例外。

System.InvalidOperationException: 'EditItem' is not allowed for this view

后跟随后的堆栈跟踪。

我理解绑定以及在ObservableCollection<T>中如果您希望能够编辑DataGrid项而不是在对象中实现IEditableObject接口所需的项目的想法{ {1}}。

我不确定为什么它不会让我编辑,虽然我更倾向于我需要将我的对象附加到某种类型的视图。

我没有找到我想要做的事情,但我已经相当成功,直到克服障碍。如果有人对我应该做什么有任何见解,我们非常感激。

此外,如果有人愿意看到它,我会发布代码,但我相信它不是关于我已经写过的内容,而是更多关于我还需要写的内容。

编辑:添加了代码

T

此处,我将列绑定到private void dg_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e) { DataGrid grid = sender as DataGrid; grid.Columns.Clear(); TableNode node = e.NewValue as TableNode; if (node != null) { InfoTable dti = new InfoTable(m_model.EditNode.Database.Path, node.FullName); int index = 0; foreach (string colName in dti.Columns) { DataGridTextColumn col = new DataGridTextColumn(); col.Header = colName; col.Binding = new Binding("[" + index + "].Info"); //Note: .Info is the information string in the class T containing the data that may or may not be edited grid.Columns.Add(col); index++; } grid.ItemsSource = dti; } } ObservableCollection中的每个ObservableCollection<ObservableCollections<T>>。我已在InfoTable中实施了IEnumerableINotfiyPropertyChange

1 个答案:

答案 0 :(得分:1)

我非常确定您的InfoTable课程也需要实施IList,以支持DataGrid编辑。

IList添加了添加和删除项目的功能,DataGrid可能需要它来管理其行。