What's new in version 2.0

AvalonDock 2.0 has been rewritten from scratch using an MVVM approach. 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).

We've put a lot of attention to WPF Logical/Visual tree management. There is one and only one logical tree which has DockingManager as root. Even if a control is placed in a different window (auto-hide or floating), it always belongs to the same logical tree, below DockingManager.

Binding Issues fixed
Version 1.* suffered from of an annoying issue regarding binding that didn't work for flyout panes and floating windows. The problem here is that WPF's logical tree breaks when content is moved inside another window, such as when a user moves a pane in a floating window.
Version 2.0 fixes this problem definitively. For a detailed description of the problem please read Binding Issues.

MVVM support added
Using an MVVM approach with version 1.* was quite a challenge (you can find a great tutorial at http://www.codeproject.com/KB/WPF/AvalonDockMVVM.aspx). Version 2.0 supports MVVM natively because you can create your model and using DockingManager as the view.

Flyout windows perfomance improved
In version 1.* when a user put content in autohide state, a new window was created by AvalonDock. The window's position and size had to be kept in sync with the docking manager. This lead to a performance issue due to a lot of framework interop calls. Version 2.0 uses the same mechanism as Visual Studio 2010, child windows with redirected logical trees, to show autohide windows. This provides increased perfomance and stability. For more info please see http://blogs.msdn.com/b/visualstudio/archive/2010/03/23/wpf-in-visual-studio-part-5-window-management.aspx.

Floating windows Aero Snap support added
Version 2.0 supports 'Aero Snap'. For details please see (http://blogs.msdn.com/b/visualstudio/archive/2009/11/05/tips-and-tricks-window-management-aero-snapping.aspx).

Floating windows integrated docking
Version 2.0 lets users redock dockable content inside a floating window, similar to the feature in VS 2010.

Focus and activation
We're working to mitigate/eliminate all the focus/activation problems that caused a lot of headaches when using AvalonDock versions prior to v2.0. This work has not yet been completed. We are contemplating using this technique to accomplish that: http://blogs.msdn.com/b/visualstudio/archive/2010/03/09/wpf-in-visual-studio-2010-part-3-focus-and-activation.aspx

Layout serialization
Version 2.0 layout serialization/deserialization is much easier because layout is now also a model completely separated from the view. This allows for easier integration with frameworks like PRISM/MEF.

WPF standard controls
Version 2.0 makes use of standard WPF control. For example, instead of creating a complex panel control, AvalonDock now uses standard grid panel. Using this approach reduced the number of classes to test and debug and the size of the resulting library.

Last edited Jun 13, 2013 at 7:28 PM by Kosmatos, version 8

Comments

mwpowellhtx Feb 15 at 6:20 PM 
Mainly I have the question: I am starting to grasp how to layout the DM, groups, panes, etc. Now I need a little help demystifying what to do with a "Model" and/or "ViewModel". Assuming Model is communicative: i.e. is NPC (NotifyPropertyChanging or -Changed), also (in my experience) ModelView is a Model adapter (i.e. for things like PropertyGrids and such), I tend to think of what AvalonDock provides more being the View portion. However, that line is somewhat blurry in the various posts I read. Assuming the pane-content is a View, how do we make the leap to reconnecting View with Model and/or ViewModel. Besides the obvious reply: save and restore layout. Okay, then what? That's just the layout. What else to restore immediate after layout? Other than that, AD is good stuff; enables a rich end-user experience to be possible. Thank you...

kcbtdev Sep 24, 2012 at 5:12 PM 
How is the restorelayout and savelayout functions performed now in 2.0? In the documentation it mentions in a second part will include this but cannot seem to find any links to part 2.

drukavina May 28, 2012 at 10:38 AM 
I'm also intereseted in migration. Considering the number of changes it feels like I'll have to rewrite it all. But I must say, it feels it will be worth it.

VictorLapin May 19, 2012 at 6:02 AM 
What about backward compatibility? How hard it will be to migrate apps from 1.3 to 2.0?

nordyj2001 Apr 13, 2012 at 3:41 PM 
Can't wait! I'm just starting a personal application that I would love to use AvalonDock on, but knowing that 2.0 is right around the corner, and will natively support MVVM, I can put it on hold until 2.0 is released. Awesome work so far, though, and can't wait for 2.0.

ptoluganti Mar 26, 2012 at 8:18 PM 
if i have multiple Anchorable in AnchorablesSource. Is there anything like as active Anchorable?

wblair8689 Feb 23, 2012 at 11:57 AM 
I second the vote for Prism Region adaptor. Although it sounds like it will be pretty easy to create one now with all of the MVVM changes.

floele Feb 21, 2012 at 6:17 AM 
Also looking forward to 2.0, your goals seem all highly valueable :)

Boinst Feb 15, 2012 at 11:08 PM 
I'm excited about v2. Thank you for the huge difference your library makes to our product.

DerekNash Jan 19, 2012 at 2:18 PM 
AvalonDock is a fantastic piece of work, and I'm really looking forward to seeing V2.0 in action! Keep up the great work!

ido_ran Jan 11, 2012 at 9:08 PM 
Can't wait for version 2.0. Hope it will have good support for RightToLeft flow direction as well.

skovour Jan 11, 2012 at 2:42 PM 
It is great to hear that Avalondock is getting redesigned. I am actively working on version 1.0 to integrate into our product line. Please consider including a feature to integrate avalondock into Prism Region Adapter. That would be a great feature provided you are already planning to make the control to support MVVM. Looking forward to get my hands on version 2.0.

adospace Jan 8, 2012 at 5:27 PM 
First commit to SVN later this week, thanks for your words!

tibel Jan 7, 2012 at 7:20 AM 
Sound great,
can't wait to get my fingers on...when you think you will publish the first version/source?

joachimb Dec 28, 2011 at 3:06 PM 
I am glad to hear that you continue development of this great control! The lack of MVVM in the old versions was the main stumbling block, but now I can hardly wait to get my hands on your first release with all those goodies in it! ;-)
Joachim

adospace Dec 24, 2011 at 1:17 PM 
I believe that layout docking interface like AvalonDock are hard to be integrated in the new metro UI interface with live tiles. Even VS2011 is built using the same layout manager of VS2010.
Maybe in the future AvalonDock could be based on WinRT stack but for now I'm committed to create a really stable and powerful library for WPF.
Ado

BernardSofaTeam Dec 24, 2011 at 9:13 AM 
First welcome back home, it is a great pleasure to see you back here !
This is also an opportunity to thank you for AvalonDock.
As many people I have question about the future of WPF/AvalonDock. Windows was made of windows, Metro design will be made of "live tiles" : Is there Metro UI features that could/should be integrated in AvalonDock V2 so that it can have the look and feel of Metro UI applications ?

Bernard from the Sofa Team (sofawpf.codeplex.com)