WPF DataGrid 编辑困难(InvalidOperationException)

WPF DataGrid Editing Difficulty (InvalidOperationException)

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

DataGrid 正确填写了我需要的信息。问题是当我去编辑其中的一个框时出现异常。

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

随后是后续堆栈跟踪。

我了解绑定以及在 ObservableCollection<T> 中的想法,如果您希望能够编辑 DataGrid 项,那么您需要在 IEditableObject 中实现接口对象 T.

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

我没有找到太多关于我正在尝试做的事情,但到目前为止我已经相当成功地克服了障碍。如果有人对我应该做什么有任何见解,我们将不胜感激。

另外,如果有人真的想看的话,我会 post 编写代码,但我相信这不是关于我已经写的东西,而是关于我还需要写的东西。

编辑:添加代码

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;
        }
    }

在这里,我将列绑定到我的 InfoTable 中的 ObservableCollection<ObservableCollections<T>> 中的每个 ObservableCollection。我在 InfoTable.

中实现了 IEnumerableINotfiyPropertyChange

我很确定您的 InfoTable class 也需要实施 IList,以支持 DataGrid 编辑。

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