WPF如何从CollectionViewSource设置最大结果量

时间:2009-12-16 13:55:11

标签: c# wpf data-binding itemscontrol collectionviewsource

我正在尝试使用DataTemplate中的ItemsControl显示一组数据,ItemsPanel设置为大小为3 x 3的统一网格。{{1} } ItemsSource设置为绑定到ItemsControl,根据搜索词过滤源集合。一切正常。

我绑定的列表是任意大小的,但我只想显示9个结果,但我不能为我的生活找出如何: a)限制CollectionViewSource输出前9项
b)将CollectionViewSource限制为仅3 x 3,并且永远不要创建新行 c)将UniformPanel限制为仅允许一次创建9个数据模板。

我真的很抓头,因为我确信这是一个常见的数据绑定方案,但我在网上找不到任何关于它的内容。

3 个答案:

答案 0 :(得分:4)

我能想到的两个解决方案:

如果您正在使用View Model,请将逻辑放在那里以创建一个可绑定到的属性,该属性只有9个元素。确保它经过单元测试,以确保超过9个元素永远不会潜入该系列。

或者,您可以在绑定项目源时使用converter将完整列表转换为前9个的缩减列表。

答案 1 :(得分:2)

这只是XAML中尚无法做到的事情之一。

你可以创建一个“CollectionViewSourceView”(:P),每当更新CollectionViewSource时它都会更新,只输出前9个项目。不过,这将进入代码隐藏(或者更好的是视图模型)。

答案 2 :(得分:1)

我的意思是和James Hay一样(使用转换器),但我还要补充一点,您可以在XAML中数据绑定ConverterParameter来动态指定返回的项目数。