Я бы использовал ListBox
(или ItemsControl
, если вам не нужен выбор элементов) с ItemsPanelTemplate
, равным WrapPanel
. Таким образом, вы можете просто использовать привязку данных и иметь макет, выглядящий как сетка.
Сначала ListBox с WrapPanel :
<ListBox ItemsSource="{Binding MyItems}"
ItemTemplate="{StaticResource CellTemplate}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
ItemTemplate
должен иметь фиксированные размеры, чтобы получить макет, подобный сетке:
<DataTemplate x:Key="CellTemplate">
<StackPanel Width="100" Height="50">
<TextBlock Text="{Binding MyNumber}" HorizontalAlignment="Center"/>
<TextBlock Text="{Binding MyText}" HorizontalAlignment="Center"/>
</StackPanel>
</DataTemplate>
Наконец, есть ObservableCollection<MyItem>
с именем MyItems
, где класс MyItem
реализует INotifyPropertyChanged
и имеет два свойства MyNumber
и MyText
.
Добавьте свои 99 предметов в коллекцию MyItems
и измените их свойство MyText
по желанию.