我正在使用可观察集合作为WPF中数据网格的数据源。
我的数据网格中有大约20列。
如果我对特定单元格的值进行任何更改,我无法在UI中看到相同的内容.Cell显示相同的旧值。如果单击该单元格,则会显示最新值。
我将用一个例子来解释这个。 假设我在可观察集合名称和年龄中有两个属性。 如果我从viewmodel向observable集合添加一些4或5列,则会在UI中显示相同的内容。如果我在viewmodel中更改特定行中Age的值,则在grid中不会显示最新值。当我显示时,将显示最新值点击那个单元格。
有人能告诉我们需要做些什么才能在UI中反映出这些变化吗?
答案 0 :(得分:7)
ObservableCollection继承INotifyCollectionChanged,以便视图可以在添加或删除元素时更新,以及INotifyPropertyChanged,以便在刷新(设置)整个列表时视图可以更新。
但是,一旦在集合容器(如数据网格)中有来自该可观察集合的项目,该行的数据上下文就成为源对象(即,observable集合中包含的对象)。如果此源对象未实现INotifyPropertyChanged,则对其数据的更改将不会传播到UI。
基本上,ObservableCollection聚合的任何对象也需要实现INotifyPropertyChanged。