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 と、データを保持するのに十分な行/列をグリッドに入れることを忘れないでください。

また、不明な数の行/列を含めるのはそれほど簡単ではありません。それが興味深い場合は、解決策を提供して返信することができますが、元の投稿はゲームボードのアイデアのように読まれました-チェッカーのように-したがって、列/行の数は一定であると想定しています.

于 2013-03-12T23:35:30.863 に答える