how can i access content of gridIndex
My Grid has many row and column.
It looks like this.
<Grid x:Name="grid" Grid.ColumnSpan="3" RenderTransformOrigin="0.5,0.5">
<Grid.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Grid.RenderTransform>
<Grid.RowDefinitions>
<RowDefinition Height="1*" />
<RowDefinition Height="1*" />
<RowDefinition Height="1*" />
<RowDefinition Height="1*" />
<RowDefinition Height="1*" />
<RowDefinition Height="1*" />
<RowDefinition Height="1*" />
<RowDefinition Height="1*开发者_Go百科" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<rectImg:RectImg Grid.Row="0" Grid.Column="0"></rectImg:RectImg>
<rectImg:RectImg Grid.Row="0" Grid.Column="1"></rectImg:RectImg>
<rectImg:RectImg Grid.Row="0" Grid.Column="2"></rectImg:RectImg>
<rectImg:RectImg Grid.Row="0" Grid.Column="3"></rectImg:RectImg>
<rectImg:RectImg Grid.Row="0" Grid.Column="4"></rectImg:RectImg>
<rectImg:RectImg Grid.Row="0" Grid.Column="5"></rectImg:RectImg>
<rectImg:RectImg Grid.Row="0" Grid.Column="6"></rectImg:RectImg>
<rectImg:RectImg Grid.Row="0" Grid.Column="7"></rectImg:RectImg>
<rectImg:RectImg Grid.Row="0" Grid.Column="8"></rectImg:RectImg>
<rectImg:RectImg Grid.Row="0" Grid.Column="9"></rectImg:RectImg>
<rectImg:RectImg Grid.Row="0" Grid.Column="9"></rectImg:RectImg>
<rectImg:RectImg Grid.Row="0" Grid.Column="9"></rectImg:RectImg>
<rectImg:RectImg Grid.Row="0" Grid.Column="9"></rectImg:RectImg>
<rectImg:RectImg Grid.Row="0" Grid.Column="10"></rectImg:RectImg>
<rectImg:RectImg Grid.Row="0" Grid.Column="11"></rectImg:RectImg>
<rectImg:RectImg Grid.Row="0" Grid.Column="12"></rectImg:RectImg>
<rectImg:RectImg Grid.Row="0" Grid.Column="13"></rectImg:RectImg>
<rectImg:RectImg Grid.Row="0" Grid.Column="14"></rectImg:RectImg>
<rectImg:RectImg Grid.Row="0" Grid.Column="15"></rectImg:RectImg>
<rectImg:RectImg Grid.Row="1" Grid.Column="0"></rectImg:RectImg>
<rectImg:RectImg Grid.Row="2" Grid.Column="0"></rectImg:RectImg>
<rectImg:RectImg Grid.Row="3" Grid.Column="0"></rectImg:RectImg>
<rectImg:RectImg Grid.Row="4" Grid.Column="0"></rectImg:RectImg>
<rectImg:RectImg Grid.Row="5" Grid.Column="0"></rectImg:RectImg>
</Grid>
I want to initialize on code behind and use foreach or for on this code:
<rectImg:RectImg Grid.Row="0" Grid.Column="0"></rectImg:RectImg>
I have tried many ways. but i did't do it.. many people say"use Grid.SetColumn and Grid.SetRow" but it can't be applied....
How can I solve this?
For the sake of your requirements this can be done as following...
From code behind you can add the RectImg controls in the grid children and before that make sure you assign the Row and Column indices.
private void AddRectImgControls()
{
var rectImg = new RectImg();
for(var i = 0; i++; i < this.grid.RowDefinitions.Count)
{
for(var j = 0; j++; j < this.grid.ColumnDefinitions.Count)
{
var rectImg = new RectImg();
Grid.SetRow(rectImg, i);
Grid.SetColumn(rectImg, j);
this.grid.Children.Add(rectImg);
}
}
}
But such design is not efficient. It should actually be an ItemsControl hosting multiple RectImg controls in it.
like this....
<ItemsControl ItemsSource="{x:Static local:MainWindow.UniformGridCollection}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="8" Columns="23" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<rectImg:RectImg/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Here "local" is the XAML namespace of you local project namespace where MainWindow resides.
Your MainWindow should be as below...
public partial class MainWindow : Window
{
//// .... rest of the MainWindow code.
public static List<object> UniformGridCollection
{
get
{
var coll = new List<object>();
for(i = 0; i < 8 * 23; i++) //// 8 and 23 are UniformGrid's row and column size.
{
coll.Add(new object());
}
return coll;
}
}
}
Let me know if this helps.
精彩评论