Support this project with a ⭐ -report an issue, or even better, place a pull request 📫 😊
My projects Edi, Aehnlich, and many others (open source or commercial) are powered by this project.
AvalonDock is a WPF Document and Tool Window layout container that is used to arrange documents and tool windows in similar ways than many well known IDEs, such as, Eclipse, Visual Studio, PhotoShop and so forth. Here are some CodeProject articles:
- AvalonDock [2.0] Tutorial Part 1 - Adding a Tool Window
- AvalonDock [2.0] Tutorial Part 2 - Adding a Start Page
- AvalonDock [2.0] Tutorial Part 3 - AvalonEdit in AvalonDock
- AvalonDock [2.0] Tutorial Part 4 - Integrating AvalonEdit Options
- AvalonDock [2.0] Tutorial Part 5 - Load/Save Layout with De-Referenced DockingManager
This repository contains additional bug fixes and a feature added fork for: xceedsoftware/wpftoolkit version 3.2-3.6. Version 4.0 and later are developed indepentently, which is why this library (version 4.0 and later) uses the namespaces and library names that were used in AvalonDock 2.0 and earlier versions. But most importantly, the usage of this AvalonDock project remains free for both, commercial and open source users.
There is also an open source repository https://github.com/dotnetprojects/WpfExtendedToolkit with a fixed and stable version of all other (other than AvalonDock) components from the WPFToolKit.
Be sure to checkout the Wiki for more details.
This project supports multitargeting frameworks (NetCore 3 and .Net 4). This means that it requires Visual Studio Community 2019 or better to build.
Please review the Project Wiki to see more demo screenshots. All screenshots below are from the MLib based VS 2013 Dark (Accent Color Gold)/Light (Accent Color Blue) theme on Windows 10. Similar theming results should be possible with other theming libraries since the implementation follow these guidelines.
The Docking Buttons are defined in XAML, which ensures a good looking image on all resolutions, even 4K or 8K, and enables us to color theme consistently with the Window 10 Accent Color.
Description | Dark | Light |
Dock Document | ![]() |
![]() |
Dock Document | ![]() |
![]() |
Dock Tool Window | ![]() |
![]() |
Document | ![]() |
![]() |
Tool Window | ![]() |
![]() |
Using the AvalonDock.Themes.VS2013 theme is very easy with Dark and Light themes. Just load Light or Dark brush resources in you resource dictionary to take advantage of existing definitions.
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/AvalonDock.Themes.VS2013;component/DarkBrushs.xaml" />
</ResourceDictionary.MergedDictionaries>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/AvalonDock.Themes.VS2013;component/LightBrushs.xaml" />
</ResourceDictionary.MergedDictionaries>
These definitions do not theme all controls used within this library. You should use a standard theming library, such as:
- MahApps.Metro,
- MLib, or
- MUI
to also theme standard elements, such as, button and textblock etc.
-
#262 Contextmenus on dpi-aware application have a wrong scaling (thanx to moby42)
-
#259 Fixing problems with tests running with XUnit StaFact (thanx to Erik Ovegård)
-
#266 Adding a key for AnchorablePaneTitle (thanx to Zachary Canann)
-
#267 Optional show hidden LayoutAnchorable on hover (thanx to Cory Todd)
-
#163 IsSelected vs IsActive behavior changed from 3.x to 4.1/4.2? (thanx to triman)
-
#244 Right click on tab header closes tab unexpectedly (thanx to Olly Atkins)
-
#208 Maximized floating windows sit under the task bar (thanx to Flynn1179)
-
#255 Don't create FloatingWindows twice (thanx to Khaos66)
-
#221 Default window style interfere with resizer window (thanx to Magnus Lindhe)
-
#224 Reverted Fixed a bug that freezed when changing DocumentPane Orientation (thanx to sukamoni)
See pull request for issues with this PR -
#240 NullReferenceException in LayoutDocumentControl.OnModelChanged (thanx to Khaos66)
-
#225 Keyboard up/down in textbox in floating anchorable focusing DropDownControlArea (thanx to Muhahe LyonJack bdachev)
-
#229 Ensure DocumentPaneGroup (fix crash when documentpane on layoutGroup) (thanx to sukamoni)
- #210 LayoutAnchorable with CanDockAsTabbedDocument="False" docks to LayoutDocumentPane when Pane is empty (thanx to Łukasz Holetzke)
- #195 DocumentClosed event issue (thanx to Skaptor)
- #205 Fix issue where the ActiveContent binding doesn't update two ways when removing a document. (thanx to PatrickHofman)
- #199 Add to LayoutDocument CanHide property returning false (thanx to bdachev)
- #138 Trying dock a floating window inside a document pane leads to its disappearing of window's content. (thanx to cuellius)
- #197 [Bug] Tabs start getting dragged around if visual tree load times are too high (thanx to X39)
- Bug fix for issue #194 App doesn't close after LayoutAnchorable AutoHide and docking it again (thanx to sphet)
-
#182 CanClose property of new LayoutAnchorableItem is different from its LayoutAnchorable (thanx to skyneps)
-
#184 All documents disappear if document stops close application in Caliburn.Micro (thanx to ryanvs)
-
Thanx to bdachev:
- #186 Raise PropertyChanged notification when LayoutContent.IsFloating changes (ensure change of the IsFloating property when the Documents state changes)
- #187 Allow to serialize CanClose if set to true for LayoutAnchorable instance
- #188 Handle CanClose and CanHide in XAML
- #190 Added additional check in LayoutGridControl.UpdateRowColDefinitions to avoid exception.
- #192 Default MenuItem style not changed by VS2013 Theme
-
Removed the additional ToolTip and ContextMenu styles from the Generic.xaml in VS2013 more details here
-
#189 Removal of DictionaryTheme breaks my application (thanx to hamohn)
-
Localized labels in NavigatorWindow
-
#170 Several Improvements (thanx to 刘晓青 LyonJack)
- Improved VS 2013 Theme and ease of reusing controls
- Fix Issue #85 Floating Window Title Flashing
- Fix Issue #71 Hiding and showing anchorable in document's pane throws an exception
- Fix Issue #135 ActiveContent not switching correctly for floating window
- Fix Issue #165 ActiveContent not stable
- Fix Issue #171 LayoutDocument leaks on close
- Breaking Change
Fix Issue #174 The SetWindowSizeWhenOpened Feature is broken - Fix Issue #177 ToolBar TabItem color error
-
#136 Layout "locking" method for Anchorables (tool windows) Part III Added CanDock for LayoutAnchorable and LayoutDocument commit 6b611fa7fdce4f6dcfed1cf00c3b9193000ffe16
-
# 159 Docking manager in TabControl can cause InvalidOperationException
-
# 151 Model.Root.Manager may be null in LayoutDocumentTabItem Thanx to scdmitryvodich
-
Feature Added: Auto resizing floating window to content thanx to Erik Ovegård
-
Feature Added: Virtualizing Tabbed Documents and/or LayoutAnchorables PR #143 + Virtualization Options thanx to matko238
- See
DockingManager.IsVirtualizingAnchorable
,DockingManager.IsVirtualizingDocument
, andIsVirtualizing
property onLayoutAnchorablePaneControl
andLayoutDocumentPaneControl
.
- See
-
Fixed Issue #149 Flicker/Lag when restoring floating window from Maximized state thanx to skyneps
-
Fixed Issue #150 Restoring floating window position on multiple monitors uses wrong Point for Virtual Screen location thanx to charles-roberts
-
Fix #98 with floating window without a content #99 Thanx to scdmitryvodich
-
Changed coding style to using TABS as indentation
-
Breaking Change Changed namespaces to AvalonDock (as authored originally in version 2.0 and earlier) See also Issue #108
-
Fix #101 and new fix for #81 with docked pane becomes not visible. Thanx to scdmitryvodich
-
Feature added: allow documents to be docked in a floating window Thanx to amolf-se https://github.com/mkonijnenburg @ http://www.amolf.nl
-
Feature added: AutoHideDelay property to control the time until an AutoHide window is reduced back to its anchored representation Thanx to Alexei Stukov
-
Fix #111 AvalonDock.LayoutRoot doesn't know how to deserialize... Thanx to scdmitryvodich
-
Fix #117 Dragging LayoutAnchoreable into outer docking buttons of floating document result in Exception Thanx to scdmitryvodich
Please review the Path History for more more information on patches and feaures in previously released versions of AvalonDock.