Dock

April 1, 2026 ยท View on GitHub

Gitter

Build Status CI

NuGet NuGet MyGet

A docking layout system.

About

Dock is a docking layout system for Avalonia applications. Use of Dock is governed by the MIT License.

Key Features:

  • ItemsSource Support: Bind document collections directly to DocumentDock for automatic document management
  • Flexible Content Templates: Use DocumentTemplate for customizable document content rendering
  • Optional Document Content Caching: Keep document views alive across tab switches via theme option (CacheDocumentTabContent)
  • Deferred Content Materialization: Defer expensive content presenter work with shared or scoped timelines, per-host delay, and explicit ordering
  • Multiple MVVM Frameworks: Support for ReactiveUI, Prism, ReactiveProperty, and standard MVVM patterns
  • Comprehensive Serialization: Save and restore layouts with multiple format options (JSON, XML, YAML, Protobuf)
  • Rich Theming: Fluent and Simple themes with full customization support
  • Floating Windows: Detach documents and tools into separate windows
  • Dependency Injection: First-class support for .NET DI containers

Dock

Building Dock

First, clone the repository or download the latest zip.

git clone https://github.com/wieslawsoltes/Dock.git

Build using .NET Core

Open up a terminal prompt and execute the commands.

Target frameworks: libraries multi-target net6.0, net8.0, and net10.0. Samples target net10.0 unless noted otherwise.

dotnet build src/Dock.Avalonia/Dock.Avalonia.csproj -c Release -f net10.0

Alternatively execute the repository build script which restores, builds and tests all projects. The scripts work on Windows and Unix like systems:

./build.sh       # or .\build.cmd on Windows

NuGet

Dock is delivered as a NuGet package.

You can find the packages here NuGet and install the package like this:

Install-Package Dock.Avalonia
Install-Package Dock.Model.Mvvm
Install-Package Dock.Serializer.Newtonsoft
Install-Package Dock.Avalonia.Themes.Fluent
Install-Package Dock.Avalonia.Themes.Browser
Install-Package Dock.Controls.DeferredContentControl

Available NuGet packages:

NuGetPackageDownloads
NuGetDock.AvaloniaDownloads
NuGetDock.Avalonia.DiagnosticsDownloads
NuGetDock.Avalonia.Themes.FluentDownloads
NuGetDock.Avalonia.Themes.BrowserDownloads
NuGetDock.Avalonia.Themes.SimpleDownloads
NuGetDock.Controls.DeferredContentControlDownloads
NuGetDock.Controls.ProportionalStackPanelDownloads
NuGetDock.Controls.RecyclingDownloads
NuGetDock.Controls.Recycling.ModelDownloads
NuGetDock.MarkupExtensionDownloads
NuGetDock.ModelDownloads
NuGetDock.Model.AvaloniaDownloads
NuGetDock.Model.CaliburMicroDownloads
NuGetDock.Model.InpcDownloads
NuGetDock.Model.MvvmDownloads
NuGetDock.Model.PrismDownloads
NuGetDock.Model.ReactivePropertyDownloads
NuGetDock.Model.ReactiveUIDownloads
NuGetDock.Model.ReactiveUI.ServicesDownloads
NuGetDock.Model.ReactiveUI.Services.AvaloniaDownloads
NuGetDock.Serializer.NewtonsoftDownloads
NuGetDock.Serializer.ProtobufDownloads
NuGetDock.Serializer.SystemTextJsonDownloads
NuGetDock.Serializer.XmlDownloads
NuGetDock.Serializer.YamlDownloads
NuGetDock.SettingsDownloads

Nightly Packages

Nightly builds are published to GitHub Packages on pushes to master. Versions use the nightly.YYYYMMDD.RUN suffix.

Add the GitHub Packages source (replace OWNER with the repository owner):

  • https://nuget.pkg.github.com/OWNER/index.json

Authenticate with a GitHub token that has read:packages:

dotnet nuget add source https://nuget.pkg.github.com/wieslawsoltes/index.json -n github -u YOUR_GITHUB_USERNAME -p YOUR_GITHUB_TOKEN --store-password-in-clear-text

Install pre-release packages:

Install-Package Dock.Avalonia -Pre
Install-Package Dock.Model.Mvvm -Pre
Install-Package Dock.Serializer.Newtonsoft -Pre
Install-Package Dock.Avalonia.Themes.Fluent -Pre
Install-Package Dock.Avalonia.Themes.Browser -Pre

Resources

  • Documentation index

  • Sample applications can be found under the samples directory which illustrate each approach in a working project:

    • DockXamlSample - XAML layouts with ItemsSource examples
    • DockMvvmSample - Full MVVM implementation
    • DockReactiveUISample - ReactiveUI patterns
    • DockDeferredContentSample - Deferred timeline scopes, delay, order, and presenter-host behavior
    • DockOfficeSample - Office-style workspaces with ReactiveUI navigation
    • DockCodeOnlySample - Pure C# layouts
    • Notepad - Real-world text editor example
    • VisualStudioDemo - Visual Studio-like interface
    • And many more specialized examples
  • GitHub source code repository.

License

Dock is licensed under the MIT license.