If you read up on WPF drag and drop you can come up with a way to do it.
Drag and Drop Overview[
^]
A few possible ways off the top of my head...
1) Use the grid as both a drag source and drop target. The grid handles all movement of its child elements
2) Make the child elements drag sources and drop targets. They'd need to be able to notify the grid of movement
3) Make the child elements drag sources and make the grid a drop target.
The third one is probably easiest to implement. The grid's row and column definitions can be used to find the cell dropped into.