我正在编写一个简单的游戏,我需要多次在Grid
中重复使用相同的行。我有一个名为1到5的5 Rectangle
块。我想要做的是对这些块中的x进行编号,然后将Rectangle
作为block1.rectangle1.someMethod()
进行访问。
一个简单的方法就是rectangle1
和rectangle26
等等,但这很烦人......
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Rectangle Name="point1" Grid.Column="0"/>
<Rectangle Name="point2" Grid.Column="1"/>
<Rectangle Name="point3" Grid.Column="2"/>
<Rectangle Name="point4" Grid.Column="3"/>
<Rectangle Name="point5" Grid.Column="4"/>
</Grid>
答案 0 :(得分:1)
命名Grid(父级)并使用其Children
属性迭代所有子元素:
foreach(UIElement element in grid1.Children)
{
Rectangle rect = element as Rectangle;
if(rect == null) continue;
rect.someMethod();
}
同样的事情可以用你的&#34;块&#34;当然
foreach(UIElement outerElement in gridParent.Children)
{
Grid grid = outerElement as Grid;
if(grid == null) continue;
foreach(UIElement element in grid.Children)
{
Rectangle rect = element as Rectangle;
if(rect == null) continue;
rect.someMethod();
}
}
如果您不想创建所有这些&#34;块&#34;我建议您使用ItemsControl和DataTemplate根据ViewModel为您生成这些内容。