为什么我的DataGrid具有ObservableCollection<;T>;当我添加或删除集合中的项目时,显
本文关键字:集合 删除 项目 添加 具有 DataGrid 我的 ObservableCollection lt 为什么 gt | 更新日期: 2023-09-27 18:27:38
我的DataGrid及其底层ObservableCollection有问题。我想以编程方式在集合中添加和删除行,并将结果显示在DataGrid中。虽然我预计这会自动发生在我身上,但事实并非如此。我发现,如果之后对数据进行排序,那么这些行将按照我的要求显示。我是这样做的:
-
DataGrid的ItemsSource设置为我的ObservableCollection<T>。
-
用户点击按钮,启动一个ICommand,删除值为X.的行
-
用户看到的内容看起来完全相同:没有删除任何行。
-
用户单击列标题对DataGrid进行排序。现在这些行被删除了。
这是怎么回事?要删除的行将一直保留到对列进行排序为止。我还发现了其他一些东西。如果刷新DataGrid.Items,则会删除这些行。这个代码很简单:
this.dg.Items.Refresh(); //"dg" is my DataGrid
虽然这不是很MVVM,但它是有效的。
请确保将直接绑定到ObservableCollection
,例如,没有附加任何Linq运算符,将其包装在集合视图/代理中等。集合上任何不转发集合更改事件的转换/包装都将阻止网格收到更改通知。