В соответствии с вашими требованиями это можно сделать следующим образом ...
Исходя из кода, вы можете добавить элементы управления RectImg в дочерние элементы сетки, а перед этим убедитесь, что вы назначили индексы Row и Column.
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);
}
}
}
Но такая конструкция неэффективна.На самом деле это должен быть ItemsControl, содержащий несколько элементов управления RectImg.
вот так ....
<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>
Здесь "local" - это пространство имен XAML вашего локального пространства имен проекта, в котором находится MainWindow.
Ваше MainWindow должно быть таким, как показано ниже...
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;
}
}
}
Дайте мне знать, если это поможет.