How would you go about to implement a docking toolbox windowing system as seen in Expression Blend where you can dock toolbox windows in a lot of ways beneat each other, ove
To support the scenarios you illustrate in your question a single DockPanel
would suffice, so all you need to write is handlers for OnDragEnter, OnDragOver, OnDragLeave, and OnDragDrop. I generally use a single event handler because the handling of these four events is so similar:
OnDragEnter & OnDragOver:
OnDragLeave:
OnDragDrop:
Naturally you also have to handle dragging on the title bar and call DoDragDrop on the source object.
The two complexities here are:
For a simple algorithm I would estimate it would take a week to get all the wrinkles ironed out. If you need a really complex data structure and the structure itself is unobvious, it could take serious time to figure that part out.