Do you have a specific reason for using a DataGrid?
The way your data is designed, I would think an <ItemsControl> would serve to get the grid you are looking for. You could use a <UniformGrid> element which would cause all of the 'nodes' to be the same size.
There is a sample of using <ItemsControl> and <UniformGrid>
here[
^]