【问题标题】:DataGrid crash on CompositeCollection EditCompositeCollection 上的 DataGrid 崩溃编辑
【发布时间】:2009-11-06 15:58:39
【问题描述】:

我有一个数据网格。 它的 ItemsSource 通过 ViewModel 绑定到 ModelView 的 CompositeCollection。 CompositeCollection 由 2 个 ObservableCollections 组成。

网格上的显示很好。我可以看到收藏。 但是,当我尝试编辑其中一行时,出现以下崩溃 (NotSupportedException): "'EditItem' 不允许用于此视图"

如何使行可编辑?我需要能够编辑表示网格中每一行的模型视图。

这是我用来绑定到 itemssource 的 CompositeCollection 属性代码: 这不是确切的代码,因为我不允许发布确切的代码,但它与我如何制作集合的逻辑相同

public CompositeCollection ModelViewsCollection { 得到 { CollectionContainer modelViewContainer;

            CompositeCollection modelViewCollection = new CompositeCollection();


            modelViewContainer= new CollectionContainer();
            modelViewContainer.Collection= this.ModelViewCollection;
            modelViewCollection .Add(modelViewContainer);

modelViewContainer= new CollectionContainer(); modelViewContainer.Collection= this.ModelViewCollection2; modelViewCollection .Add(modelViewContainer);

            return modelViewCollection;
        }
    }

【问题讨论】:

    标签: datagrid compositecollection


    【解决方案1】:

    CompositeCollection 没有实现数据网格用来编辑的 IEditableCollectionView

    我遇到了同样的问题,最后在视图模型上做了我自己的 fake 复合集合,类似于你所拥有的,如果你在你的集合中放入的只是两个可观察的集合,不难跟踪收听收集的变化。并使您的视图模型集合包含它们两者

    你甚至可以做我做的肮脏的 hack,重建网格绑定到的 ObservableCollection 每次集合之一更改(我知道这不优雅,但是当我有时间时我会回去优化......即永远不会) 使用 linq 查询,这些东西真的很简单。

    否则,也许您可​​以从 CompositeCollection 派生并尝试添加 IEditableCollectionView,如果您可以正常工作,请务必告诉我。

    这里是数据网格论坛上的the same question

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      • 2019-01-23
      • 1970-01-01
      • 2011-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多