5

我正在尝试使用DataTemplatein 中的a 显示一组数据ItemsControl,该ItemsPanel集合为大小为 3 x 3 的统一网格。ItemsSourceItemsControl设置为绑定到CollectionViewSource基于搜索词过滤源集合的 a 。这一切都很好。

我绑定到的列表是任意大小的,但我只想显示 9 个结果,但我一生都无法弄清楚如何:
a)限制 CollectionViewSource输出前 9 个项目
b)将 限制UniformPanel为仅 3 x 3 并且从不创建新行
c) 限制ItemsControl仅允许一次创建 9 个数据模板。

我真的很摸不着头脑,因为我确信这是一个常见的数据绑定场景,但我在网上找不到任何关于它的信息。

4

3 回答 3

4

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

如果您使用的是 View Model,请将逻辑放入其中以创建一个您可以绑定到的属性,该属性只有 9 个元素。确保它经过单元测试,以确保不会有超过 9 个元素潜入集合中。

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

于 2009-12-16T14:06:53.633 回答
2

这只是您在 XAML 中无法做到的事情之一(目前)。

您可以创建一个“CollectionViewSourceView”(:P),只要 CollectionViewSource 更新,它就会更新,只输出前 9 个项目。尽管如此,这仍将进入代码隐藏(或者更好的是,视图模型)。

于 2009-12-16T14:00:01.303 回答
1

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

于 2009-12-16T14:08:42.223 回答