Я использую Grid как ItemsPanel для списка, динамически связанного с ItemsControl. Код ниже работает - с остающейся проблемой: я не могу найти способ динамически инициализировать ColumnDefinitions и RowDefinitions сетки. Как следствие, все значения помещаются друг на друга.
<ItemsControl ItemsSource="{Binding Cells}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Grid.Row" Value="{Binding RowIndex}"/>
<Setter Property="Grid.Column" Value="{Binding ColumnIndex}"/>
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Value}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Имейте в виду, что я ищу ответ в соответствии с шаблоном MVVM. Поэтому подкласс и код позади - это обходные пути, но не решения.