我需要在列表框项目中有一个动态布局。
此类布局的示例将是Facebook上的新闻源。为简化起见,我们将其缩小为一个新闻项目类型:有人添加了N张照片。我已经有了一个算法,它可以获取图像大小并产生最佳布局。
我不希望有20个图像具有绑定的宽度,高度,边距,可见性。
我必须启用虚拟化。
如何在Windows手机平台上完成?
答案 0 :(得分:0)
最简单的方法:
将ItemsControl放在列表框项目中。设置ItemsControl的宽度和高度,如布局算法所示。将ItemsPanel设置为网格。在数据模板中,放置一个图像,设置边距,如布局算法所示。
图像不会被虚拟化,列表框项目(包含带图像的整个ItemsControl)将会。
最正确的方法(仅当您有许多图像和/或大图像以便单个项目超过2048像素时才需要):
继承自例如VirtualizingStackPanel,覆盖MeasureOverride和ArrangeOverride以实现自定义布局,然后花费大约2-10天的时间在代码中修复与虚拟化相关的问题。这种方式虚拟化了一切,但时间是估计的(我从未自己做过),我不能保证你最终会成功。
中级方法: 重新设计您的布局算法,以便在行中布局图像。使用单个虚拟化列表框或ItemsControl,将项目拆分为较小的行,每行包含单行图像。