我正在尝试使用GridView
来统一安排其孩子,就像 Community Toolkit 的UnifromGrid
一样,但是是虚拟化的。
我无法使用默认Itemspanel
的{{1}}的原因是,我认为它决定了第一个单元格确定的所有其他单元格的大小,请看以下内容:
请注意右侧的空白,此外,尺寸较大的商品也将被剪裁为第一个商品的大小。
我尝试使用`UniformGrid',但是它没有被虚拟化,并且我的应用程序有时会很费劲,并且在有很多项时变得非常滞后。
我还尝试扩展GridView
以创建自定义VirtualizingPanel
,但是it's not possible for now.
现在有什么我可以解决的问题吗? 谢谢。
答案 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行所示。