虚拟小组统一安排儿童

时间:2019-01-25 10:18:07

标签: uwp uwp-xaml windows-community-toolkit

我正在尝试使用GridView来统一安排其孩子,就像 Community Toolkit UnifromGrid一样,但是是虚拟化的。

我无法使用默认Itemspanel的{​​{1}}的原因是,我认为它决定了第一个单元格确定的所有其他单元格的大小,请看以下内容:

enter image description here

请注意右侧的空白,此外,尺寸较大的商品也将被剪裁为第一个商品的大小。

我尝试使用`UniformGrid',但是它没有被虚拟化,并且我的应用程序有时会很费劲,并且在有很多项时变得非常滞后。

我还尝试扩展GridView以创建自定义VirtualizingPanel,但是it's not possible for now.

现在有什么我可以解决的问题吗? 谢谢。

2 个答案:

答案 0 :(得分:1)

如何使用Windows社区工具包中的AdaptiveGridView control?它将允许您根据可用宽度自动调整项目的大小。但是,要使项目精确地为正方形将是一个挑战,因为它会随着窗口的扩展方式改变宽度。

答案 1 :(得分:0)

选项1: 如果您不介意固定大小的单元格,则可以在ItemsPanel上指定。

@UseExperimental

选项2: 在Microsoft的WinUI NuGet的预发行版本中,有一个名为“ Repeater”的新列表控件,可以将其与“ UniformGridLayout”结合使用。

当前,您可以在XamlControlsGallery存储库中找到此示例:https://github.com/Microsoft/Xaml-Controls-Gallery/blob/master/XamlControlsGallery/ControlPages/ItemsRepeaterPage.xaml

请注意,这仍然是预发行版本,因此文档很少,并且控件的表面积可能会发生变化(实际上,已经发生了几次更改)。 Repeater也不是Selector或ListView的子级,因此您会丢失自动的ItemContainers,SelectionModes,ItemClicking等。您必须按自己的意愿手动添加这些内容-Repeater本质上是一个新的列表表示基类,与ItemsControl更相似而不是GridView或ListView。

附带警告-虚拟化只能在17763 SDK和更高版本上本地运行-在较低的SDK上,还需要使用ScrollAnchorProvider启用虚拟化,如示例的第110行所示。