WPF使用虚拟化在网格中排列项

3
我正在寻找一种方法,在固定行数和任意列数下呈现大小相等的元素。(比如iTunes或Picasa的相册视图。我认为某些平台将此称为“网格视图”)。
虽然 WrapPanel 可以完成此任务,但我需要虚拟化,因为我要绑定一个非常大的对象集合。
我在网上搜索了很多,发现有商业可用的 VirtualizationWrapPanels 和关于如何实现自己的 VirtualizationPanel 的博客文章,但似乎没有更简单的解决方案。
使用标准WPF组件,是否有可能以网格样式(固定行数)排列虚拟化的数据项?
3个回答

3

最近我不得不寻找类似的功能,但很难找到任何已经准备好的。

我找到了一个文章系列和示例代码,其中包含一个虚拟平铺面板。

我一直在使用它,它相当稳定。但是需要进行一些更改。我们必须将一些键盘控件添加到面板中,因为它没有实现,需要更改选项卡以及调整瓷砖大小等。如果您决定自己编写,这是一个很好的起点。

但是一个主要的警告是它也必须有一个被限制大小的父级,否则会出错。通常这不是问题,因为您希望它被限制在大小上,以便启用滚动。可能有解决这个特定问题的方法,但我们没有时间去调查。


请注意,该代码已无法下载(文章中的链接已失效)。您可以通过在您最喜欢的搜索引擎中搜索“VirtualizingTilePanel”来找到该代码的改编版本(我在GitHub上找到了两个,Code Project上找到了一个)。 - Arkane

2
一个快速且简单的解决方案是使用列表(在您的情况下是水平列表)作为“分组项”(在您的情况下是垂直项),该列表将确定所需的行数。虚拟化将在“分组器”上发生。

“grouping items” 是什么意思? - J D
@JonHarrop 仅用于呈现其他项目组的项目。 - Agent_L

1

新地址为http://blogs.claritycon.com/leeroth/2009/09/custom-panels-in-silverlight-wpf-part-4-virtualization/。 - Agent_L

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接