我从 CollectionViewSource 填充 DataGrid。每行都有一个删除按钮。在删除时,我正在从数据库中删除一行。我的问题是 DataGrids 的 UI 没有更新。如何从 DataGrid 中清除已删除的行?
请问有什么建议吗?
我从 CollectionViewSource 填充 DataGrid。每行都有一个删除按钮。在删除时,我正在从数据库中删除一行。我的问题是 DataGrids 的 UI 没有更新。如何从 DataGrid 中清除已删除的行?
请问有什么建议吗?
确保底层集合从 INotifyPropertyChanged 接口实现,并且在删除行时调用 OnPropertyChanged。
ObservableCollection是一个实现 INotifyPropertyChanged 的集合,因此请考虑将其用作基础集合对象。
MSDN 关于CollectionViewSource的备注
CollectionViewSource 是 CollectionView 类或从 CollectionView 派生的类的代理。CollectionViewSource 使 XAML 代码能够设置常用的 CollectionView 属性,并将这些设置传递给基础视图。CollectionViewSource 有一个保存实际视图的 View 属性和一个保存源集合的 Source 属性。
您可以将集合视图视为绑定源集合之上的层,它允许您基于排序、过滤和分组查询来导航和显示集合,而无需操作底层源集合本身。如果源集合实现 INotifyCollectionChanged 接口,则由 CollectionChanged 事件引发的更改将传播到视图。
因为视图不会更改底层源集合,所以每个源集合可以有多个与之关联的视图。例如,您可能有一个 Task 对象的集合。通过使用视图,您可以以不同的方式显示相同的数据。例如,您可能希望在页面左侧显示按优先级排序的任务,并在右侧显示按区域分组的任务。
有关详细信息,请参阅数据绑定概述中的绑定到集合部分。
您还应该从 CollectionViewSource 中删除该行数据。或再次从数据库中加载 CollectionViewSource。
谢谢