0

我的问题是这样的:

我有 2 个列表框:

一个绑定到一个名为 Photos 类型的照片的集合,另一个绑定到一个 CollectionViewSource,该集合绑定到同一个照片集合。

listBox1 -> photos(这里 listBox1 绑定到照片的默认 CollectionView,当然不是直接绑定到照片。)

ListBox2 -> cvs -> 照片

两个集合(默认集合和我的 CVS)都有一个过滤器,可以将它们显示的项目从 8 个项目减少到 5 个项目。

现在我有 2 个标签。一个绑定到照片对象的 Count 属性,另一个绑定到 Count 属性,其中源是 cvs(我的 CollectionViewSource)对象。

第一个标签显示数字 8,正如我所见,这是因为即使我正在过滤它的默认 CollectionViewSource,照片的数量仍为 8。

第二个标签显示数字 5。

我了解到绑定到 cvs 是 WPF 从 cvs 解包源对象,并且 Path=Count 与底层对象相关,即照片,这里的数字也应该是 8。

有人能解释一下我在哪里穿吗?

谢谢!

4

1 回答 1

2

绑定不会绑定到源集合而是视图。集合视图还有一个Count属性,它返回(过滤的)视图中的项目数,而不是原始集合中的项目数。

(您可以使用调试器查看通常的View属性CollectionViewSource将是一个对象,该对象是CollectionView其子类或其子类之一的实例。绑定将隐式绑定到View.Count

要绑定到原始计数,请使用 path SourceCollection.Count

于 2011-07-17T11:10:45.537 回答