AvalonDock v5.0.0
A powerful WPF Document and Tool Window layout container for building Visual Studio-like docking interfaces.
What is AvalonDock?
AvalonDock is a WPF layout container that allows you to arrange documents and tool windows in ways similar to many well-known IDEs such as Visual Studio, Eclipse, and PhotoShop. It provides a complete docking system with floating windows, tabbed documents, auto-hide panels, and customizable themes.
AvalonDock is used by many open source and commercial projects, including Stride (game engine), Optick (profiler), RoslynPad (C# editor), DaxStudio (DAX query tool), Macad3D (3D CAD), and Microsoft’s Profile Explorer.
Key Features
| Feature | Description |
|---|---|
| Dockable Panels | Dock tool windows to any side of the application, or float them freely. |
| Tabbed Documents | Organize documents in tabbed groups, split horizontally or vertically. |
| Auto-Hide | Minimize tool windows to side tabs, expanding on hover or click. |
| Floating Windows | Tear off any panel into an independent floating window. |
| Layout Serialization | Save and restore complex layouts via XML or JSON. |
| MVVM Support | First-class MVVM integration with view model binding. |
| Dependency Injection | Built-in DI support via Microsoft.Extensions.DependencyInjection. |
| 6 Built-in Themes | Arc, VS2013, VS2010, Expression, Metro, and Aero themes included. |
| Multi-Target | Supports .NET 9, .NET 10, and .NET Framework 4.8. |
Quick Example
<Window x:Class="MyApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:avalonDock="https://github.com/Dirkster99/AvalonDock">
<avalonDock:DockingManager>
<avalonDock:LayoutRoot>
<avalonDock:LayoutPanel Orientation="Horizontal">
<avalonDock:LayoutAnchorablePane DockWidth="250">
<avalonDock:LayoutAnchorable Title="Solution Explorer"
ContentId="solutionExplorer">
<TextBlock Text="Explorer content here" />
</avalonDock:LayoutAnchorable>
</avalonDock:LayoutAnchorablePane>
<avalonDock:LayoutDocumentPane>
<avalonDock:LayoutDocument Title="Document1.txt"
ContentId="doc1">
<TextBox Text="Document content here" />
</avalonDock:LayoutDocument>
</avalonDock:LayoutDocumentPane>
</avalonDock:LayoutPanel>
</avalonDock:LayoutRoot>
</avalonDock:DockingManager>
</Window>
NuGet Packages
| Package | Description |
|---|---|
| Dirkster.AvalonDock | Core docking library |
| Dirkster.AvalonDock.Mvvm | MVVM base classes (no external dependencies) |
| Dirkster.AvalonDock.Mvvm.CommunityToolkit | CommunityToolkit.Mvvm integration |
| Dirkster.AvalonDock.Themes.Arc | Modern Arc theme (Dark & Light) |
| Dirkster.AvalonDock.Themes.VS2013 | VS2013 theme (Dark, Light, Blue) |
| Dirkster.AvalonDock.Themes.VS2010 | VS2010 theme |
| Dirkster.AvalonDock.Themes.Expression | Expression Blend theme |
| Dirkster.AvalonDock.Themes.Metro | Metro/WinUI theme |
| Dirkster.AvalonDock.Themes.Aero | Classic Aero theme |
Platform Support
| Framework | Status |
|---|---|
| .NET 10 | ✅ Supported |
| .NET 9 | ✅ Supported |
| .NET Framework 4.8 | ✅ Supported |
AvalonDock is a WPF library and runs exclusively on Windows.
Upgrading from v4?
If you are migrating from AvalonDock v4.x, see the Migration Guide for a complete list of breaking changes and step-by-step upgrade instructions.
License
AvalonDock is dual-licensed under the MS-PL and Apache 2.0 licenses. It is free for both commercial and open source use.