代码之家  ›  专栏  ›  技术社区  ›  Muad'Dib

在WPF中创建视图的视图

  •  1
  • Muad'Dib  · 技术社区  · 15 年前

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

    当源集合(一个 ObservableCollection<T> )更新和更新数据项的时间——比如调用 Refresh() 方法。我需要避免对所有视图调用refresh,因为我们不知道原始集合和结束视图之间的所有视图,以及 刷新() 非常缓慢。

    我们试图避免滚动自己的视图类——我们更喜欢(强烈地)使用已经存在于.NET库中的某个类。

    更新

    我们已经就此向微软打了电话。我知道其他人也有同样的问题,至少 Dr. WPF tells me .

    1 回复  |  直到 14 年前
        1
  •  1
  •   Muad'Dib    14 年前

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

    我们的集合基于ObservableCollection,它附加到集合中每个元素的PropertyChanged事件。我们有一个事件,每当属性发生变化时,我们都会调用它,这样其他类和/或视图就可以钩住它,并在它们认为合适的时候处理它。

    然后,我们基于ListCollectionView创建了自己的ICollectionView。视图监视集合中的CollectionItemChanged事件,只需调用(如果集合中的项是IEditableObject)IEditableList.EditItem(…)和IEditableList.Commititem(…)

    此edit()和committem()导致视图刷新,而不实际调用refresh()。

    这完全是“haxor”,但是,在微软为我们这些可怜的开发人员做些什么来解决这个问题之前,它一直都是有效的。

    推荐文章