如何在 UWP 中实现这种项目布局 XAML

How to achieve this type of item layout in UWP XAML

这是我想要的布局示例图片:

所有项目都具有相同的宽度,但高度是可变的。 我希望它水平环绕但垂直滚动。我可以接受它在碰到面板边缘时环绕,或者限制为 3-4 列。

我一直在谷歌上搜索这个并尝试了各种类型的项目面板(VariableSizedWrapGridWrapPanelVariableSizedGrid 等),但无法找到任何实际匹配的东西那种布局。我得到的最接近的是 UWP 社区工具包的 WrapGrid,但它仍然根据最高的项目设置行的高度,所以较小的项目下面有一堆空的 space。

我觉得我遗漏了一些明显的东西,因为我在其他 UWP 应用程序中看到过这种布局,并且它在 html 中是一种相当常见的模式,但我就是想不通。

目前(2017 年 5 月)不可能以干净的方式实现这种精确的布局,但是团队 working on it 面向未来。


您可以使用 VariableSizedWrapGrid 以肮脏的方式到达那里。最肮脏的选择是设置 1px 的高度,然后让您的控件根据需要的高度获取 x(例如 200)行。一个更好的解决方案是将行高设置为例如20 或 50px 并从那里乘以。这会给你一个非常灵活的布局(但你必须做一些计算才能知道你需要哪个高度)。请记住,这些肮脏的方式会对性能产生 负面影响 ,但如果确实需要,它会起作用。

我建议要么等待新控件(最早在秋季创作者更新中,今年晚些时候,也许更晚),要么尝试以有限数量的可变尺寸来适应您的项目,这样您就可以回退到VariableSizedWrapGrid 的良好实现(而不是使用肮脏的方式)。

UWP 社区工具包现在有 StaggeredPanel