In our product we use a HeaderedContentControl to lay out forms in a grid. The control template has a label and padding/margins so that the control's content is always spaced appropriately. In the XAML we just add them down the columns.
I'd post some XAML but I'm in the middle of getting a new computer set up. :| But from what I remember it would look something like this:
Then in the grid, you define your rows and columns, and put one of these in each cell, or just down each row:
I might be answering a different question but this is how we lay out our forms.