Here you can find a description of some new features/breaking changes/bug fixes of the new AvalonDock version (2.0).
I've rewritten AvalonDock 2.0 from scratch using a MVVM approach. In short there is a deep separation between the Model (that describes how the layout is composed), the ViewModel (which prepares the model to be consumed by the view) and the View (a set of stylizable controls that show the user controls).
I've put a lot of attention to WPF Logical/Visual tree managements:
- There is one and only one logical tree which has the DockingManager as root. Even if a control is placed in a different window (Autohidden windows/floating windows) it always belong to the same logical tree (below the DockingManager).
Version 1.* suffers of an annoying issue regarding binding that doesn't work for flyout panes and floating windows (for a detailed description of the problem please read Binding Issues
. The problem here is that wpf logical tree is broken when a content is moved inside another window (like when user move a pane in a floating window).
Version 2.0 fixes this problem definitively.MVVM Support
Using a MVVM approach in version 1.* is quite a challenge (you can find a great tutorial athttp://www.codeproject.com/KB/WPF/AvalonDockMVVM.aspx
). Version 2.0 support natively MVVM because (as the logical tree is only one for DockingManager object) you can create your model and using the docking manager as the view.Flyout windows perfomance
In version 1.* when a user put a content in autohide state a new window is created by AvalonDock. This windows must be synched in position and size with the docking manager. This leads to a performance issue because involves a lot of interop.
Version 2.0 use the same mechanism of VS 2010 (child windows with redirected logical tree) to show autohide windows increasing perfomance and stability.
For more info http://blogs.msdn.com/b/visualstudio/archive/2010/03/23/wpf-in-visual-studio-part-5-window-management.aspxFloating Windows Aero Snap
Version 2.0 will support Aero Snap (http://blogs.msdn.com/b/visualstudio/archive/2009/11/05/tips-and-tricks-window-management-aero-snapping.aspx
).Floating Windows Integrated Docking
In Version 2.0 you'll be able to redock a dockable content inside a floating window (as happen in VS2010).Focus and Activation
I'm working to mitigate/eliminate all the focus/activation problems that causes a lot of headache developing with version 1.2. This is what I've in mind (why not learn from masters :) : http://blogs.msdn.com/b/visualstudio/archive/2010/03/09/wpf-in-visual-studio-2010-part-3-focus-and-activation.aspxLayout Serialization
In version 2.0 layout serialization/deserialization is much (much) more easy because layout is a model completely separated from the view. This will allow an easier integration with framework like PRISM/MEF.WPF standard controls
In version 2.0 I've decided to use WPF standard controls, for example instead of creating a complex panel control I've used the standard grid panel. Using this approach I've reduced the number of classes/code to test and debug and the size of the resulting library.