title: How would you design a docking library for WPF?
body: <p>I want to implement a docking library in wpf with behavior similar to Adobe Photoshops CS3.</p>
  
  <p>You can attach floating Panels to other Panels or Docks by mouse dragging. Docks have a fixed location.</p>
  
  <p>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. </p>
  
  <p>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.</p>
  
  <p>Example of a Panel to Panel movement:</p>
  
  <p><a href="http://dl.getdropbox.com/u/133877/Misc/Stackoverflow/wpf_dock_01.png" rel="nofollow noreferrer">alt text http://dl.getdropbox.com/u/133877/Misc/Stackoverflow/wpf_dock_01.png</a></p>
  
  <p><a href="http://dl.getdropbox.com/u/133877/Misc/Stackoverflow/wpf_dock_02.png" rel="nofollow noreferrer">alt text http://dl.getdropbox.com/u/133877/Misc/Stackoverflow/wpf_dock_02.png</a></p>