Skip to content

wieslawsoltes/Dock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dock

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
  • 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: netstandard2.0, net6.0, net8.0 for libraries, net9.0 for samples:

dotnet build src/Dock.Avalonia/Dock.Avalonia.csproj -c Release -f netstandard2.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

Available NuGet packages:

Core packages:

  • Dock.Avalonia - Main Avalonia controls and themes
  • Dock.Model - Core model interfaces and base classes

Model packages:

  • Dock.Model.Mvvm - MVVM implementation with base view models
  • Dock.Model.ReactiveUI - ReactiveUI integration
  • Dock.Model.ReactiveProperty - ReactiveProperty integration
  • Dock.Model.Prism - Prism framework integration
  • Dock.Model.Inpc - INotifyPropertyChanged base implementation
  • Dock.Model.Avalonia - Avalonia-specific model extensions
  • Dock.Model.Extensions.DependencyInjection - .NET DI container integration

Serialization packages:

  • Dock.Serializer.Newtonsoft - JSON serialization using Newtonsoft.Json
  • Dock.Serializer.SystemTextJson - JSON serialization using System.Text.Json
  • Dock.Serializer.Protobuf - Binary serialization using protobuf-net
  • Dock.Serializer.Xml - XML serialization
  • Dock.Serializer.Yaml - YAML serialization

UI and control packages:

  • Dock.Avalonia.Themes.Fluent - Fluent theme styles
  • Dock.Avalonia.Themes.Simple - Simple theme styles
  • Dock.Avalonia.Diagnostics - Debugging and diagnostic tools
  • Dock.Controls.ProportionalStackPanel - Resizable panel control
  • Dock.Controls.Recycling - Control recycling utilities
  • Dock.Controls.Recycling.Model - Control recycling model interfaces
  • Dock.MarkupExtension - XAML markup extensions
  • Dock.Settings - Global docking behavior settings

or by using nightly build feed:

  • Add https://www.myget.org/F/dock-nightly/api/v2 to your package sources
  • Alternative nightly build feed https://pkgs.dev.azure.com/wieslawsoltes/GitHub/_packaging/Nightly/nuget/v3/index.json
  • Update your package using Dock feed

and install the package like this:

Install-Package Dock.Avalonia -Pre
Install-Package Dock.Model.Mvvm -Pre
Install-Package Dock.Serializer.Newtonsoft -Pre
Install-Package Dock.Avalonia.Themes.Fluent -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
    • 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.