带有ListViewCollection的WPF Listview - Listview没有反映集合的更改。

时间:2011-07-29 19:57:54

标签: wpf listview binding listcollectionview ieditablecollectionview

我有一个列表视图绑定到ListCollectionView。 LCV在任何时候都有单一的分类描述。我正在以这种方式更新集合:

IEditableCollectionView IEditView = lvBatches.Items as IEditableCollectionView;

IEditView.EditItem(m_collectionView.CurrentItem);//I've also tried passing MyListView.SelectedItem
((TestData)IEditView.CurrentEditItem).start = frm.newDate;
((TestData)IEditView.CurrentEditItem).edited = true;
IEditView.CommitEdit();

然而,当我这样做时,listview的项目没有任何反应。如果我重新排序列表,则会反映更改。集合上的Refresh()也会更新列表视图,但这就像使用炸药棒打开汽水罐一样,从我收集的内容。

有没有人有任何想法。我上面的代码看起来就像我在网上看到的例子所以我不认为这是问题所在。是否存在人们让任何人意识到的常见错误,可能与排序有关?我有它工作,现在它不是,我不知道是什么打破了它。

提前致谢。

2 个答案:

答案 0 :(得分:3)

请参阅我关于创建VeryObservableCollection的答案。

您遇到的问题是集合不会仅仅根据属性更改进行更新 - 只有在添加或删除元素时才会触发CollectionChanged。所以你需要挂钩PropertyChanged并在属性发生变化时发送CollectionChanged,这就是VeryObservableCollection的作用。

答案 1 :(得分:1)

您是否正在调用INotifyPropertyChanged?如果Refresh()显示正确的值,那么很可能它们在集合中,但UI必须知道更新值。