为了显示对象的列表/集合,您需要使用各种“ItemsControl”。在这种情况下,以下片段可能会有所帮助:
<ItemsControl ItemsSource="{Binding Game.Tiles}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
</Grid>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Grid.Column" Value="{Binding Column}" />
<Setter Property="Grid.Row" Value="{Binding Row}" />
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type local:Position}">
<Ellipse Fill="{Binding FillColor}"
Stroke="{StaticResource TileStroke}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
请记住为 DataTemplate 放入正确的 DataType 和足够的行/列到 Grid 中以保存您的数据。
此外,包含未知数量的行/列也不是那么容易。如果您对此感兴趣,我可能会为您提供解决方案,但原始帖子读起来就像游戏板的想法 - 就像跳棋一样 - 所以我假设列/行的数量是恒定的。