Вариант 1:
Если вы не возражаете против ячеек фиксированного размера, вы можете указать это на ItemsPanel.
<GridView>
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<ItemsWrapGrid Orientation="Horizontal" ItemHeight="200" ItemWidth="200"/>
</ItemsPanelTemplate>
</GridView.ItemsPanel>
</GridView>
Вариант 2:
В предварительных версиях WinUI NuGet от Microsoft есть новый элемент управления списком под названием «Repeater», который в сочетании с его «UniformGridLayout» может делать, как вы хотите.
В настоящий момент вы можете найти образец этого в репозитории XamlControlsGallery здесь: https://github.com/Microsoft/Xaml-Controls-Gallery/blob/master/XamlControlsGallery/ControlPages/ItemsRepeaterPage.xaml
Обратите внимание, что это все еще предварительная версия, так что документации очень мало, и площадь поверхности элементов управления, вероятно, изменится (и даже изменилась несколько раз). Repeater также не является дочерним для Selector или ListView, поэтому вы теряете автоматические ItemContainers, SelectionModes, ItemClicking и т. Д. Вам придется вручную добавлять их по своему усмотрению - ретранслятор по сути является новым базовым классом, представляющим список, более похожим на ItemsControl а не GridView или ListView.
Это сопровождается предостережениями: виртуализация работает только на SDK 17763 и выше - на более низком SDK также необходимо использовать ScrollAnchorProvider, который также включает виртуализацию, как показано в строке 110 примера.