1

我从 CollectionViewSource 填充 DataGrid。每行都有一个删除按钮。在删除时,我正在从数据库中删除一行。我的问题是 DataGrids 的 UI 没有更新。如何从 DataGrid 中清除已删除的行?

请问有什么建议吗?

4

2 回答 2

1

确保底层集合从 INotifyPropertyChanged 接口实现,并且在删除行时调用 OnPropertyChanged。

ObservableCollection是一个实现 INotifyPropertyChanged 的​​集合,因此请考虑将其用作基础集合对象。

MSDN 关于CollectionViewSource的备注

CollectionViewSource 是 CollectionView 类或从 CollectionView 派生的类的代理。CollectionViewSource 使 XAML 代码能够设置常用的 CollectionView 属性,并将这些设置传递给基础视图。CollectionViewSource 有一个保存实际视图的 View 属性和一个保存源集合的 Source 属性。

您可以将集合视图视为绑定源集合之上的层,它允许您基于排序、过滤和分组查询来导航和显示集合,而无需操作底层源集合本身。如果源集合实现 INotifyCollectionChanged 接口,则由 CollectionChanged 事件引发的更改将传播到视图。

因为视图不会更改底层源集合,所以每个源集合可以有多个与之关联的视图。例如,您可能有一个 Task 对象的集合。通过使用视图,您可以以不同的方式显示相同的数据。例如,您可能希望在页面左侧显示按优先级排序的任务,并在右侧显示按区域分组的任务。

有关详细信息,请参阅数据绑定概述中的绑定到集合部分。

于 2010-02-25T12:18:17.883 回答
1

您还应该从 CollectionViewSource 中删除该行数据。或再次从数据库中加载 CollectionViewSource。

谢谢

于 2010-02-25T12:24:16.253 回答