2014-02-26 30 views
2

我使用observable集合作为WPF中的数据网格的数据源。可观察集合中的变化在数据网格中未反映的项目

我的数据网格中有大约20列。

如果我改变某个特定单元格的值,我就无法看到UI中反映的那个值。单元格显示相同的旧值。如果单击该单元格的最新值出现。

我会用一个例子来解释一下。 假设我有一个可观察集合Name和Age中的两个属性。 如果我向viewmodel中的可观察集合添加了一些4或5列,则UI中将显示相同的内容。如果我从viewmodel中更改特定行中Age的值,则最新值在grid中不可见。最大值出现在我点击那个单元格。

任何人都可以告诉需要做什么才能获得UI中所反映的更改吗?

+2

底层的源类是否实现了'INotifyPropertyChanged'接口? –

回答

6

ObservableCollection继承INotifyCollectionChanged,以便视图可以在添加或删除元素时更新,INotifyPropertyChanged,以便在整个列表刷新(设置)时更新视图。但是,一旦您在某个集合容器(如数据网格)中的该可观察集合中有一个项目,该行的数据上下文就成为源对象(即,可观察集合中包含的对象)。如果此源对象未实现INotifyPropertyChanged,则其数据更改将不会传播到UI。

基本上,ObservableCollection聚合的任何对象也需要实现INotifyPropertyChanged。

相关问题