【问题标题】:WPF arrange items in a grid with virtualizationWPF 通过虚拟化在网格中排列项目
【发布时间】:2020-03-31 23:22:06
【问题描述】:

我正在寻找在固定数量的行和任意数量的列中呈现相同大小的元素的方法。 (想想 iTunes 或 Picasa 的专辑视图。我相信一些平台将其称为“gridview”)

WrapPanel 可以完成这项工作,但我要绑定大量对象,因此我需要虚拟化。

我一直在网上寻找,找到了商业上可用的VirtualizationWrapPanels 和关于如何实现自己的VirtualizationPanel 的博客文章,但我似乎找不到任何更简单的解决方案。

是否可以使用标准 WPF 组件在网格样式视图(固定行数)中排列虚拟化数据绑定项?

【问题讨论】:

    标签: wpf xaml layout virtualization


    【解决方案1】:

    我最近不得不四处寻找类似的功能,并且很难找到任何可以用于生产的东西。

    我找到了包含虚拟化磁贴面板的系列或文章和示例代码

    http://blogs.msdn.com/b/dancre/archive/tags/virtualizingtilepanel/

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

    一个主要的警告是,它还必须有一个限制为有限大小的父级,否则它会出错。这通常不是问题,因为您希望它的大小受到限制,以便您可以启用滚动。这个特定问题可能有解决方案,但我们没有时间进行调查。我们只是将其作为技术债务提出,因为它实际上并没有以目前的形式影响我们。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • “分组项目”到底是什么意思?
      • @JonHarrop 项目,其唯一目的是展示一组其他项目。
      【解决方案3】:

      小组有责任提供虚拟化。不幸的是,该框架只提供了一个虚拟化 StackPanel:

      http://msdn.microsoft.com/en-us/library/system.windows.controls.virtualizingpanel.aspx

      这里有一篇非常好的博文,提供了一个虚拟化 WrapPanel:

      https://blogs.claritycon.com/custom-panels-in-silverlight-wpf-part-4-virtualization-7f3bded02587

      另一种选择是使用 DataGrid,它会为您虚拟化。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 1970-01-01
      • 2018-07-24
      • 1970-01-01
      • 2018-01-17
      • 2010-12-25
      • 2011-04-17
      相关资源
      最近更新 更多