【发布时间】:2010-02-25 12:06:37
【问题描述】:
我从 CollectionViewSource 填充 DataGrid。每行都有一个删除按钮。 在删除时,我正在从数据库中删除一行。 我的问题是 DataGrids 的 UI 没有更新。 如何从 DataGrid 中清除已删除的行?
有什么建议吗?
【问题讨论】:
标签: c# wpfdatagrid
我从 CollectionViewSource 填充 DataGrid。每行都有一个删除按钮。 在删除时,我正在从数据库中删除一行。 我的问题是 DataGrids 的 UI 没有更新。 如何从 DataGrid 中清除已删除的行?
有什么建议吗?
【问题讨论】:
标签: c# wpfdatagrid
确保底层集合从 INotifyPropertyChanged 接口实现,并且在删除行时调用 OnPropertyChanged。
ObservableCollection 是一个实现 INotifyPropertyChanged 的集合,因此请考虑将其用作基础集合对象。
MSDN 关于CollectionViewSource的备注
CollectionViewSource 是一个代理 CollectionView 类,或者一个类 派生自 CollectionView。 CollectionViewSource 启用 XAML 代码 设置常用的 CollectionView 属性,传递 这些设置到底层视图。 CollectionViewSource 有一个视图 拥有实际视图的属性 和一个 Source 属性,其中包含 源集合。
您可以将集合视图视为 绑定源之上的层 允许您导航的集合 并根据 排序、过滤和分组查询,所有 无需操纵 底层源集合本身。 如果源集合实现 INotifyCollectionChanged 界面,由引发的变化 传播 CollectionChanged 事件 到意见。
因为视图不会改变 底层源集合,每个 源集合可以有多个 与之相关的视图。例如, 你可能有一个任务集合 对象。通过使用视图,您 可以显示相同的数据 不同的方法。例如,在 您可能想要的页面左侧 显示按优先级排序的任务,然后打开 右侧,按区域分组。
有关详细信息,请参阅绑定 到数据中的集合部分 绑定概述。
【讨论】:
您还应该从 CollectionViewSource 中删除该行数据。或再次从数据库中加载 CollectionViewSource。
谢谢
【讨论】: