1

好的,所以我需要ICollectionView从现有的ICollectionView. 这个想法是我可以在现有视图上设置任何过滤器/分组/排序,然后从该“基本”视图创建其他视图,实际上是“分层”或聚合我的过滤器等。

ObservableCollection<T>当源集合(an )更新和数据项更新时,我需要最终视图“自动”更新其项目——比如调用该Refresh()方法。我需要避免对所有视图调用 Refresh,因为我们不知道原始集合和最终视图之间的所有视图,而且Refresh()速度非常慢。

我们试图避免滚动我们自己的视图类——我们更愿意(强烈)使用 .net 库中已经存在的东西。

更新

我们已就此致电 Microsoft。我知道其他人也有同样的问题,至少是WPF 博士告诉我的。

4

1 回答 1

1

好的,所以我们最终滚动了我们自己的集合和视图。

我们的集合基于 ObservableCollection,它附加到集合中每个元素的 PropertyChanged 事件。每当属性更改时,我们都会调用一个事件,这样其他类和/或视图可以挂钩并按照他们认为合适的方式处理它。

然后,我们基于 ListCollectionView 创建了自己的 ICollectionView。视图监视集合中的 CollectionItemChanged 事件并简单地调用(如果集合中的项目是 IEditableObject)IEditableList.EditItem(...) 和 IEditableList.CommitItem(...)

这个 Edit() 然后 CommitItem() 导致视图刷新而不实际调用 Refresh()

这完全是“骗子”,但它一直有效,直到 MS 为我们可怜的开发人员做点什么来解决这个问题。

于 2010-03-10T23:46:29.093 回答