How would you design a docking library for WPF?

I want to implement a docking library in wpf with behavior similar to Adobe Photoshops CS3.

You can attach floating Panels to other Panels or Docks by mouse dragging. Docks have a fixed location.

Would you use a central Docking Manager class? How would the message flow look like? I was thinking of using 2 interfaces, called IDock and IDockable, with the panel implementing both, and a dock implementing only IDock.

I'm looking for some specific design patterns or OO principles that could help me here, so that the overall design is sound. I know that I'm not really specific here, but that's because I don't know where to start.

Example of a Panel to Panel movement:


Maybe you could start studying which is a wpf docking library. There is probably something to learn from it.

Need Your Help

QListWidget item at 0th index is selected by default

c++ qt qt4 qlistwidget

I have a QListWidget which has some item, and I have "Remove" button on my form which actually removes item from list. Problem is that when form load for first time and I press remove without selec...

Problems with Node Extension

c++ node.js node-modules

I am trying to make a Node extension per...