1

我在网格中有这样的东西:

    <Ellipse Grid.Row="{Binding Path=Game.Tiles[2].Row}"
             Grid.Column="{Binding Path=Game.Tiles[2].Column}"
             Fill="{Binding Game.Tiles[2].FillColor}"
             Stroke ="{StaticResource TileStroke}"></Ellipse>

如何在不输入 24 次的情况下枚举所有 24 个对象?

4

1 回答 1

4

为了显示对象的列表/集合,您需要使用各种“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 中以保存您的数据。

此外,包含未知数量的行/列也不是那么容易。如果您对此感兴趣,我可能会为您提供解决方案,但原始帖子读起来就像游戏板的想法 - 就像跳棋一样 - 所以我假设列/行的数量是恒定的。

于 2013-03-12T23:35:30.863 回答