# Dock **Repository Path**: MapleKing/Dock ## Basic Information - **Project Name**: Dock - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-15 - **Last Updated**: 2025-11-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Dock [![Gitter](https://badges.gitter.im/wieslawsoltes/Dock.svg)](https://gitter.im/wieslawsoltes/Dock?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) [![Build Status](https://dev.azure.com/wieslawsoltes/GitHub/_apis/build/status/wieslawsoltes.Dock?branchName=master)](https://dev.azure.com/wieslawsoltes/GitHub/_build/latest?definitionId=89&branchName=master) [![CI](https://github.com/wieslawsoltes/Dock/actions/workflows/build.yml/badge.svg)](https://github.com/wieslawsoltes/Dock/actions/workflows/build.yml) [![NuGet](https://img.shields.io/nuget/v/Dock.Model.svg)](https://www.nuget.org/packages/Dock.Avalonia) [![NuGet](https://img.shields.io/nuget/dt/Dock.Model.svg)](https://www.nuget.org/packages/Dock.Avalonia) [![MyGet](https://img.shields.io/myget/dock-nightly/vpre/Dock.Model.svg?label=myget)](https://www.myget.org/gallery/dock-nightly) A docking layout system. ## About **Dock** is a docking layout system for [Avalonia](https://github.com/AvaloniaUI/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](images/Dock.png)](images/Dock.png) ## 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`, `net10.0` for libraries and samples: ```bash 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: ```bash ./build.sh # or .\build.cmd on Windows ``` ## NuGet Dock is delivered as a NuGet package. You can find the packages here [NuGet](https://www.nuget.org/packages/Dock.Avalonia/) and install the package like this: ```powershell 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: ```powershell 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](docs/README.md) * Sample applications can be found under the [samples](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.](https://github.com/wieslawsoltes/Dock) ## License Dock is licensed under the [MIT license](LICENSE.TXT).