Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 绑定到CollectionViewSource问题_Wpf_Data Binding_Collectionviewsource - Fatal编程技术网

Wpf 绑定到CollectionViewSource问题

Wpf 绑定到CollectionViewSource问题,wpf,data-binding,collectionviewsource,Wpf,Data Binding,Collectionviewsource,我的问题是这样的: 我有两个列表框: 一个绑定到名为“照片类型的照片”的集合,另一个绑定到绑定到同一照片集合的CollectionViewSource listBox1->photos(这里listBox1当然绑定到照片的默认集合视图,而不是直接绑定到照片。) 列表框2->cvs->照片 两个集合(默认集合和我的CV)都有一个过滤器,可以将它们显示的项从8项减少到5项 现在我有两个标签。一个绑定到photos对象的Count属性,另一个绑定到Count属性,其中源是cvs(my Collecti

我的问题是这样的:

我有两个列表框:

一个绑定到名为“照片类型的照片”的集合,另一个绑定到绑定到同一照片集合的CollectionViewSource

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

列表框2->cvs->照片

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

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

第一个标签显示的是数字8,在我看来,这是因为照片的数量保持在8,即使我正在过滤它的默认CollectionViewSource

第二个标签显示数字5

关于绑定到cvs,我学到的是WPF从cvs中展开源对象,Path=Count与底层对象(即照片)相关,这里的数字也应该是8

有人能解释我在哪里吗


谢谢

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

(您可以使用调试器查看的属性通常是作为其子类的实例或子类之一的对象。该绑定将隐式绑定到
视图。Count


要绑定到原始计数,请使用路径
SourceCollection.count

1)我们谈论的是CollectionViewSource对象,而不是他或CollectionViewSource.View具有计数属性2)当您要绑定到包装器对象(本例中为CollectionViewSource对象)的属性时将绑定对象中的BindsDirectlyToSource设置为true。这意味着我们不想从CVS对象中打开我们的源对象,我们想绑定到CVS对象上的属性3)我在Nathan Adam出版的《WPF》一书中读到了它。好吧,问题是集合视图的默认接口(
ICollectionView
)没有任何count属性,但对于大多数源集合,您最终会得到一个这样的实现。因此,显示的这个计数实际上来自于我在回答中链接到的属性,因为绑定隐式绑定到
View.count
,它通常只是存在。即使您绑定到一个
IEnumerable
绑定系统也会在其周围创建一个
IList
,因此即使如此,视图中也可能会有一个count。也可以从1这一事实推断出会有一个count属性。您不需要自己创建视图2。框架中只有一个类实现了
ICollectionView
,那就是
CollectionView
,它已经提到了属性。你似乎不明白我在说什么,我早就回答过了:它们不绑定到同一个属性,它隐式绑定到
视图.Count
,该值与源的计数不同,因为它考虑了过滤器。您可以使用
BindsDirectlyToSource
Source.Count
,也可以采用默认行为,通过将路径设置为
SourceCollection.Count
,从视图中获取集合。如果禁用
BindsDirectlyToSource
,它将绑定到视图,而不是源集合。