Sortable.Avalonia
1.0.0
dotnet add package Sortable.Avalonia --version 1.0.0
NuGet\Install-Package Sortable.Avalonia -Version 1.0.0
<PackageReference Include="Sortable.Avalonia" Version="1.0.0" />
<PackageVersion Include="Sortable.Avalonia" Version="1.0.0" />
<PackageReference Include="Sortable.Avalonia" />
paket add Sortable.Avalonia --version 1.0.0
#r "nuget: Sortable.Avalonia, 1.0.0"
#:package Sortable.Avalonia@1.0.0
#addin nuget:?package=Sortable.Avalonia&version=1.0.0
#tool nuget:?package=Sortable.Avalonia&version=1.0.0
Sortable.Avalonia
An attached-behavior library that adds drag-and-drop sorting, cross-collection transfers, and animated item movements to any Avalonia ItemsControl — all with full MVVM support and no code-behind.
Key Features
✅ Same-collection sorting – Reorder items within a list
✅ Cross-collection transfers – Move/copy/swap items between lists
✅ Reversible drops – Accept/reject drops in your ViewModel before commit
✅ Transfer modes – Move, Copy, or Swap
✅ Sortable modes – Sort (shift) or Swap (exchange)
✅ Drag handles – Restrict drag start to specific controls
✅ Smooth animations – For both interactive and programmatic changes
✅ Groups – Isolate interactions by group name
✅ Touch + Mouse – Unified pointer input
Quick Example
<ItemsControl xmlns:sortable="clr-namespace:Sortable.Avalonia;assembly=Sortable.Avalonia"
sortable:Sortable.Sortable="True"
sortable:Sortable.UpdateCommand="{Binding UpdateCmd}"
ItemsSource="{Binding Items}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border sortable:Sortable.IsSortable="True" Cursor="Hand">
<TextBlock Text="{Binding Name}" />
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
[RelayCommand]
void Update(SortableUpdateEventArgs e)
{
if (e.ApplyUpdateMutation())
{
Console.WriteLine($"Moved from {e.OldIndex} to {e.NewIndex}");
}
}
Installation
dotnet add package Sortable.Avalonia
Why Use This?
- Zero code-behind – Pure XAML + ViewModel commands
- Works with any panel –
StackPanel,UniformGrid,WrapPanel, etc. - Conditional acceptance – Validate business rules before applying mutations
- Helper extensions –
ApplyUpdateMutation()andApplyDropMutation()handle collection changes for you
Common Scenarios
| Use Case | Description |
|---|---|
| Kanban board | Drag tasks between columns (Triage → Engineering → Release) |
| Priority queue | Reorder items by drag-and-drop |
| Drag handles | Only drag from specific icons, keep buttons clickable |
| Copy mode | Duplicate templates instead of moving them |
| Swap mode | Exchange positions without shifting other items |
| Cross-collection swap | Trade items between two lists in one gesture |
Visit the repository for the full documentation
📖 Sortable.Avalonia Repo - Full Documentation & Interactive Demos
The repository includes:
- Detailed property reference
- 18 runnable demo scenarios (Kanban, grid layouts, drag handles, etc.)
- Advanced patterns (conditional acceptance, copy mode, groups)
- Animation control and customization guide
License
MIT License – See LICENSE for details.
Need help? Open an issue or check out the demo app for working examples.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- Avalonia (>= 11.3.12)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 69 | 3/8/2026 |
First stable release: Drag-and-drop sorting, cross-collection transfers, reversible drops, drag handles, sort/swap modes, animated programmatic updates, mouse and touch support.