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
There's a great WPF Docking Library someone has published on codeproject.com, that has the functionality you're looking for. I used it myslef once, and i got it going pretty smoothly.
Check it out here : http://www.codeproject.com/KB/WPF/WPFdockinglib.aspx
AvalonDock is good.
http://avalondock.codeplex.com/
It's a pity you can't use it ;)
WPF already has controls which support docking (or that effect). Check Adam Nathan's WPF book WPF Unleashed, he covers it in part 2.
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.