这可能是一个骗局,但我找不到任何东西在一个小时左右的搜索和阅读MSDN。嵌套Itemscontrols数据绑定到同一网格
我正在制作基于2D瓦片的游戏,并将ItemsControl绑定到Tiles列表(C#类)。这很好。
<ItemsControl ItemsSource="{Binding Tiles}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="{Binding Board.Rows}" Columns="{Binding Board.Columns}"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type local:Tile}">
<Grid x:Name="tileGrid" Background="{Binding TileImage}"/>
</DataTemplate>
</ItemsControl.Resources>
<ItemsControl>
有用于每个图块内5x5的网格,因为我需要能够在为每一分不同地点放置单位。每个Tile
包含一个List<Location>
,其中有一个单元,我想要放在该网格上。
<Grid x:Name="tileGrid" Background="{Binding TileImage}">
<ColumnDefinition snipped - there's 5 columns and 5 rows>
<ItemsControl ItemsSource="{Binding Locations}">
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type sys:Int32}">
<Image Source="unit.bmp"
Grid.Column="{Binding Converter={StaticResource ColumnConverter}}"
Grid.Row="{Binding Converter={StaticResource RowConverter}}"/>
</DataTemplate>
</ItemsControl.Resources>
</ItemsControl>
其中ColumnConverter和RowConverter只是从位置获取列索引。
问题是我无法绑定到ItemsControl中的tileGrid的Column和Row。有些人建议将网格放置在Locations ItemsControl中,但这不起作用,因为它需要是外部Tiles ItemsControl的子节点。
我该怎么办?
您指的是哪个网格作为外部网格?统一网格? – 2011-04-08 13:46:59
我在问题中已澄清。我希望将位置集合放置在5x5 tileGrid中,但我无法弄清楚如何去做。 – David 2011-04-08 13:49:57