So, I was able to find a solution to this. It might not be the best one, but it works.
Here is the code:
foreach (DataTable table in result.Tables)
{
GfoTopBox box1 = StuffData(table);
Grid.SetRow(box1, j);
Grid.SetColumn(box1, i);
output.Children.Add(box1);
i++;
if (i >= output.ColumnDefinitions.Count)
{
i = 0;
j++;
}
}
"result" is the data set, each table provides the data for one of the objects I wanted to put in the cells of the Grid in the question (output).
However, if anyone has better solution, I am open to suggestions :)