【发布时间】:2014-10-16 21:16:35
【问题描述】:
我已将 DataGrid 绑定到 TEntity 类型的 ObservableCollection。 该集合包含实体框架实体。
当数据库中的此类实体发生更改时,应用会收到通知。如果这是一个简单的替换更改,我只需覆盖 ObservableCollection 中的实体。
但是,这不会触发 UI 刷新。我认为问题在于它仍然是我所指的同一个对象。实体现在肯定与 UI 显示的不同(我在 DbContext 上重新加载),因为某些列已更改。
当我这样做时
collection[index] = changedObject;
什么都没有发生。集合正确触发 CollectionChanged 事件,但 UI 没有更新任何内容。
然后我尝试了这个:
collection[index] = new TEntity(); // Create a dummy object
collection[index] = changedObject;
现在 UI 更新,但集合当然会触发 2 个 CollectionChanged 事件。
我想一种选择是为已更改实体的所有属性触发 PropertyChanged 事件,但这似乎有点矫枉过正(事件太多),到目前为止,我不需要在我的 EF 类上实现该事件。
我的问题: 如果行已更改但对象仍然相同(尽管对象中的属性已更改),我如何可靠地更新 WPF 绑定的 ObservableCollection?
【问题讨论】:
标签: wpf datagrid observablecollection inotifycollectionchanged