更改集合中的项目时如何通知 DataGrid?

问题描述

我有两个 DataGrid 绑定到我的 viewmodel 中的同一个 ObservableCollection 属性。 当我编辑一个 DataGrid 中的现有行时,另一行在提交行后更新。

但它是如何工作的? NotifyCollectionChanged 事件不会在基础 ObservableCollection 上引发。我已通过订阅该活动进行了检查。

解决方法

在这种情况下,您正在修改集合的项目(实体)的属性,而不是集合本身。
因此,不会引发 CollectionChanged 事件。
要更新实体中的属性,必须在其中实现 INotifyPropertyChanged。
但是如果属性的改变只通过绑定发生,那么即使这样也没有必要。
绑定在其工作中使用 PropertyDescriptor 和其他类型的反射。
这允许绑定“知道”一个属性已被另一个绑定更改。

如果您说俄语,请阅读我的文章:https://www.cyberforum.ru/wpf-silverlight/thread2650880.html