为什么我的DataGrid具有ObservableCollection<;T>;当我添加或删除集合中的项目时,显

本文关键字:集合 删除 项目 添加 具有 DataGrid 我的 ObservableCollection lt 为什么 gt | 更新日期: 2023-09-27 18:27:38

我的DataGrid及其底层ObservableCollection有问题。我想以编程方式在集合中添加和删除行,并将结果显示在DataGrid中。虽然我预计这会自动发生在我身上,但事实并非如此。我发现,如果之后对数据进行排序,那么这些行将按照我的要求显示。我是这样做的:

  1. DataGrid的ItemsSource设置为我的ObservableCollection<T>。

  2. 用户点击按钮,启动一个ICommand,删除值为X.的行

  3. 用户看到的内容看起来完全相同:没有删除任何行。

  4. 用户单击列标题对DataGrid进行排序。现在这些行被删除了。

这是怎么回事?要删除的行将一直保留到对列进行排序为止。我还发现了其他一些东西。如果刷新DataGrid.Items,则会删除这些行。这个代码很简单:

this.dg.Items.Refresh();  //"dg" is my DataGrid

虽然这不是很MVVM,但它是有效的。

为什么我的DataGrid具有ObservableCollection<;T>;当我添加或删除集合中的项目时,显

请确保将直接绑定到ObservableCollection,例如,没有附加任何Linq运算符,将其包装在集合视图/代理中等。集合上任何不转发集合更改事件的转换/包装都将阻止网格收到更改通知。