I am creating a custom control in WPF 4.0 that is going to look something like the image below. It basically consists of "swim lanes". Each ItemsControl has elements that can be dragged and dropped, with a visual render of the item, within the same row on every element except for the row header. There are a fixed number of columns and a variable number of rows.

I was thinking of two different approaches to this problem:
Use a DataGrid and heavily modify it so that it will support this behaviour.
Create a grid with a dynamic number of rows and implement each item as group of 5 controls (one for each column).
Considerations: Using MVVM, the whole thing should be able to bind to a list.
What would be the most reasonable approach in this situation?
Please comment if anything is unclear!