我正在尝试使用DataTemplate
中的ItemsControl
显示一组数据,ItemsPanel
设置为大小为3 x 3的统一网格。{{1} } ItemsSource
设置为绑定到ItemsControl
,根据搜索词过滤源集合。一切正常。
我绑定的列表是任意大小的,但我只想显示9个结果,但我不能为我的生活找出如何:
a)限制CollectionViewSource
输出前9项
b)将CollectionViewSource
限制为仅3 x 3,并且永远不要创建新行
c)将UniformPanel
限制为仅允许一次创建9个数据模板。
我真的很抓头,因为我确信这是一个常见的数据绑定方案,但我在网上找不到任何关于它的内容。
答案 0 :(得分:4)
我能想到的两个解决方案:
如果您正在使用View Model,请将逻辑放在那里以创建一个可绑定到的属性,该属性只有9个元素。确保它经过单元测试,以确保超过9个元素永远不会潜入该系列。
或者,您可以在绑定项目源时使用converter将完整列表转换为前9个的缩减列表。
答案 1 :(得分:2)
这只是XAML中尚无法做到的事情之一。
你可以创建一个“CollectionViewSourceView”(:P),每当更新CollectionViewSource时它都会更新,只输出前9个项目。不过,这将进入代码隐藏(或者更好的是视图模型)。
答案 2 :(得分:1)
我的意思是和James Hay一样(使用转换器),但我还要补充一点,您可以在XAML中数据绑定ConverterParameter来动态指定返回的项目数。