36

We are implementing an application that needs dockable windows, similar to Visual Studio 2005/2008, but with multiple "docking sites", unlike VS's single one. Does anyone have a recommendation on a good library for this - either OSS or commercial? I am aware that Infragistics has one, as well as Divelement's SandDock and WPF-Dock from DevComponents, as well as ActiPro's Docking & MDI product. There is also one on CodeProject. Has anyone used any of these libraries? Was the experience good or bad? If you have experience with one of them, does it support multiple "docking sites"?

Brian Stewart
  • 9,157
  • 11
  • 54
  • 66
  • 5
    As a sidenote, if you are interested in how the VS team implemented docking and various other aspects in Visual Studio 2010, there's a great set of blog posts at http://blogs.msdn.com/b/visualstudio/archive/2010/03/23/wpf-in-visual-studio-part-5-window-management.aspx – Pat Dec 17 '10 at 21:21
  • The MSDN link in @pat's comment is dead now. Here's the version from the Internet Archive: http://web.archive.org/web/20151025043559/http://blogs.msdn.com/b/visualstudio/archive/2010/03/23/wpf-in-visual-studio-part-5-window-management.aspx – antiduh Nov 14 '19 at 22:00

8 Answers8

39

The one from Codeproject is the AvalonDock - we use it for more then half a year now, but we're far from release yet so we have the flexibility. Before ending up with AvalonDock we tried Infragistix, ActiPro, SandDock and may be some others. Even though AvalonDock is not 100% bug free (well what is?) there are no major bugs; it is very stable, fast and has all the functionality. It does support multiple docking sites.

Its an open source project and is in active development, so bugs are beeing found and fixed. Good experience so far.

Glenn Slayden
  • 17,543
  • 3
  • 114
  • 108
Alex_P
  • 1,886
  • 1
  • 19
  • 22
  • 5
    One feature that AvalonDock (as well as all the other docking managers) doesn't have - is fully functional ItemsSource property in containers. I.e. I'd really like to be able to have an observable collection in my class, that I could bind to ItemsSource property of DocumentPane or DockablePane and as long as I have correct DataTemplates these will be displayed as document or dockable tabs/windows. ItemsSource property is there but the usability of it is very limited - it can only contain DocumentContent or DockableContent objects and drag&drop dosn't work when ItemsSource is used. – Alex_P Jul 07 '09 at 16:42
  • 5
    Only a couple of weeks after I posted the comment above the feature was added to AvalonDoc! There is now DocumentsSource property that can be bound to a collection of documents. And it works as a charm. – Alex_P Jul 20 '09 at 13:10
  • Have you made dockable toolbars using AvalonDock? – Number8 Jul 31 '09 at 16:29
  • No I didn't, but hope to have look at it soon and will report here then. – Alex_P Aug 17 '09 at 13:53
  • Mabye I got a bad build, I downloaded the lastest build today and none of the samples worked. Everyone of them died for various reasons. – Kelly Jul 09 '10 at 18:03
  • 2
    Real support for binding in AvalonDock is inexistent. ItemsSource works as long as you give it a collection of DocumentContent/DockableContent, but I find the coupling and/or extra work this induces mind-numbing, at least in the projects I'm working on. I tried to hack together a MVVM-enabled fix of AvalonDock (of course, some features are quite difficult to convert, like undocking a window), but failed for various reasons, sometimes when I was _this_ close to a working solution. I find that AvalonDock in its current state forbids the use of best practices and don't really recommend it. – Alex Paven Sep 13 '10 at 06:31
  • 1
    I just started with WPF a few months ago and I need a docking functionality, and found AvalonDock on recommendation here. One thing I like the opensource libraries is that I could tweak the source code to meet my special need sometimes. However, my experience with AvalonDock so far is very bad. It crashes in many cases. And the author (and the community) doesn't respond to the issues. I'm not sure if it's still in active state because there is no update since this July. – newman Nov 13 '10 at 10:34
  • It has become fairly quiet recently, but as it is it as stable enough. It doesn't seem to crash so look at how you use it - there might be something wrong on your side. – Alex_P Dec 01 '10 at 11:11
  • BTW: This control is used by SharpDevelop - this makes me confident enough in it. – Alex_P Dec 01 '10 at 11:49
  • 4
    I'm a bit concerned about the lack of ongoing development this library has received in the past 2 years. – Seth May 14 '12 at 01:21
  • AvalonDock was recently updated to version 2 which includes multitude of improvements. So the project is far from being dead. – Alex_P Oct 09 '12 at 07:53
  • About the MVVM incompatibility, it looks like they addressed it in 2.0. – Owen Johnson Jan 10 '13 at 22:31
  • 1
    I seems dead to me, I've had version 2.0 degrade for inexplicable reasons (losing alt key adornments, losing page navigation), and no response at all from any of their forums. – Dave Clemmer Apr 06 '14 at 00:09
  • 1
    Xceed bought it a while ago and AvalonDock page on Codeplex went quiet since then. It seems though that AvalonDock is included in community edition of Xceed's WPF toolkit (http://wpftoolkit.codeplex.com/) I didn't look at it yet - don't know if it is any different to version 2.0 – Alex_P May 12 '14 at 09:41
  • AvalonDock has clumsy structure - you feel it when start really using it! (in apps way more complex than helloworld) Also I had bad experiense with save/restore layouts. Looks like it's designed by hobbyists and far from professional level. – Vincent Apr 08 '21 at 17:08
10

I've been using the ActiPro library for several months and it's done me well. It does support multiple docking sites. The support is outstanding and you get some other controls (date picker, etc) that are missing from WPF. To me, for $150 it's money well spent. It worked out of the box, no fuss.

We used to use Divelements for WinForm controls but we think Actipro has better support, so we switched for WPF.

Just my two cents.

billb
  • 3,608
  • 1
  • 32
  • 36
  • 3
    I can't recommend ActiPro's Dock enough - it is an excellent docking solution (we used it with a Prism application). I usually loathe 3rd party controls, but this set of controls feel like they have come from Microsoft. The object API is logical, yet complete. We also used the ActiPro Ribbon, and this also was a great control to use. Highly recommended! – Brad Leach Jul 02 '09 at 23:48
  • Agreed. Given the price, the quality of the controls and support can't be beat. I also chose the Actipro library because of the small number of libraries compared to certain other packages. – Cameron MacFarland Jul 19 '09 at 13:22
  • I will be the voice going against ActiPro then, the serialization of the dock isn't complete, really a shame you can't deserialize toolbars docked in the document panes. (Edit: sorry, bill's answer doesn't deserve -1). – Florian Doyon Jun 21 '10 at 12:43
  • @Brad: You said "I can't recommend ActiPro...", but your content seems to be "I DO recommend...". Can you please correct the typo? – newman Nov 13 '10 at 10:24
  • 7
    @miliu, Brads phrase is "I can't recommend ActiPro's Dock enough" meaning he really recommends the product, this is the same lines as "I can't tell you how much I love..." – Brett Ryan Feb 07 '11 at 23:20
  • I can also vouch for the ActiPro [MDI](https://en.wikipedia.org/wiki/Multiple-document_interface) docking library. Although a bit expensive for my purposes, it has been quite a solid solution. View some screenshots of the app at the bottom of this page: https://github.com/delph-in/docs/wiki/AgreeTop – Glenn Slayden Jun 26 '23 at 01:31
8

Don't forget AvalonDock on GitHub (part of WPF Toolkit). I've seen it mentioned in other places.

Initially I was going to use the ActiPro library (mostly because I am already using their ribbon), but I might give AvalonDock a chance since it is open source.

Anybody have any feedback/comments on AvalonDock?

Manushin Igor
  • 3,398
  • 1
  • 26
  • 40
Philipp Schmid
  • 5,778
  • 5
  • 44
  • 66
4

I use DotNetBar, because it has ribbon/dock and more controls, and it's inexpensive. It's great.

http://www.devcomponents.com/dotnetbar-wpf/

Rick Rat
  • 1,732
  • 1
  • 16
  • 32
4

SandDock is alright. We used it for a POC phase of a project. I found some pretty bad bugs in their layout saving mechanism. It generated XML, but then couldn't load this XML back; it threw an exception! I actually read through all the generated XML and had to write code to modify the XML slightly after each time it was generated. It did not seem like it was a well thought out design; I was hoping for common WPF base types like

Infragistics is a bit better but buggy. In fact, if you try running it on a machine that only has .Net 3.0 and no .Net 3.5, it doesn't work correctly. Have an outstanding dev issue with Infragistics and I don't know if they've made any progress on a fix for this. I've also had it crash a few times when floating a window and dragging it around (suspect this has to do with the .Net 3.0/3.5 issue above). I've found styling this control to be pretty un-intuitive.

Szymon Rozga
  • 17,971
  • 7
  • 53
  • 66
3

Here is another one:

http://www.essentialobjects.com/Products/EOWpf/DockView.aspx

This one has a number of built-in skins that you can switch dynamically. It also has many individual controls (such as a "Splitter" control) that you can use independently.

Jason
  • 465
  • 5
  • 2
3

I tried all the libraries listed here and they're all buggy to some extent. Although they are pricy I would recommend Telerik and Infragistics. Nevron merits a mention because their library is the best I've seen but it's for WinForms.

user275587
  • 690
  • 8
  • 21
  • I definitely recommend Telerik too. They are very quick to respond when you have technical support questions. – Seth May 14 '12 at 01:19
  • I too recommend Telerik vs Devexpress for controls. Their controls seem better engineered and extensible. With Devexpress I was initially delighted at the quick answers, but they never stopped needing questions due to the opaque black box nature of their code. Telerik made me feel like I was learning how their stuff worked and skilling up on how to extend things and would eventually only be asking questions about bugs or missing features instead of constantly needing to ask questions about usage. – Dirk Bester Jan 17 '14 at 22:03
3

1 year later ... AvalonDock is now stable and robust. There's also an "AvalonDock wrapper" that simplifies working with it without reducing its possibilities. See http://sofawpf.codeplex.com/

qay
  • 59
  • 1
  • 4