Используйте список и измените ItemTemplate и ItemsPanel
<ListBox ItemsSource="{Binding ShippingBays}" FontSize="14" Grid.Row="2" SelectedItem="{Binding SelectedBay}" Background="White" FocusVisualStyle="{x:Null}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<TextBlock Text="{Binding Description}" FontWeight="SemiBold" FontFamily="Arial" FontSize="12" Padding="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="{Binding ColumnCount}" Rows="{Binding RowCount}" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
Это часть кода, который я написал для аналогичного приложения. Хотя я не вписываю информацию в поля, я просто отображаю ее. Я знаю, что это не точный ответ, но способ сделать это, даже если вам пришлось изменить способ добавления полей и т. Д.
Моя сетка отображается с буквой А внизу, потому что я сортирую по убыванию RowCount, в противном случае буква А будет в верхней строке, как в Excel.
![enter image description here](https://i.stack.imgur.com/HIOH1.png)