【问题标题】:Create a View of a View in WPF在 WPF 中创建视图的视图
【发布时间】:2010-02-26 00:32:46
【问题描述】:

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

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

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

更新

我们已就此致电 Microsoft。我知道其他人也有同样的问题,至少,Dr. WPF tells me

【问题讨论】:

    标签: wpf dataview icollectionview


    【解决方案1】:

    好的,所以我们最终推出了自己的收藏和视图。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多