0

Wpf 绑定对于熟悉它的人来说很有趣,对于新手来说是噩梦。如果我将一个组合框绑定到注释掉的 CollectionView,该控件将显示所有元素,包括那些被过滤器排除的元素。如果我将相同的组合框绑定到 ICollectionView 它只显示过滤的元素,它是好的。

 //public CollectionView MyCapitoliList { get; private set; }
 public ICollectionView MyCapitoliList { get; private set; }

这是我用来创建 CollectionView 和 ICollectionView 的代码

MyCapitoliList = CollectionViewSource.GetDefaultView(listaCapitoli);
//MyCapitoliList = new CollectionView(listaCapitoli);


MyCapitoliList.Filter = new Predicate<object>(isCapitoloMaster);

我检查了 CollectionView 从 C# 代码打印它的所有元素,它只包含过滤的元素,所以 CollectionView 是好的。如果我将它绑定到组合框,为什么会得到所有未过滤的元素?

谢谢菲利波

4

1 回答 1

1

MSDN说关于CollectionView类...

您不应在代码中创建此类的对象。要为仅实现 IEnumerable 的集合创建集合视图,请创建一个 CollectionViewSource 对象,将您的集合添加到 Source 属性,然后从 View 属性获取集合视图。

它进一步补充...

在 WPF 应用程序中,所有集合都有一个关联的默认集合视图。绑定引擎不是直接使用集合,而是始终通过关联的视图访问集合。要获取默认视图,请使用 CollectionViewSource.GetDefaultView 方法。

于 2012-02-22T08:30:50.800 回答