Install and first grid

One package for your host, a list of columns, a source over your data — and a grid in a window.

See it first

The showcase app has every Core and Pro scene in one window — the million-row table, cards, tree, pivot, charts and the 3D views. No SDK needed: download the demo (Windows x64, ZIP), unpack it and start ArionUI.Demo.exe.

What you need

  • .NET 10 SDK. The engine targets net10.0; the WPF host targets net10.0-windows.
  • A desktop OS. Avalonia itself runs on Windows, macOS and Linux; ArionUI is developed and tested on Windows so far. The WPF and WinForms hosts are Windows only.
  • A GPU, ideally. Not a requirement — where none is available the engine falls back to a CPU path on its own and logs that it did.

Add the package

Terminal
dotnet add package ArionUI.Rendering.Avalonia --prerelease   # Avalonia host
dotnet add package ArionUI.Rendering.Wpf --prerelease        # or: WPF host

The host package brings the engine along: ArionUI.Core, ArionUI.Presentation, ArionUI.Grid, ArionUI.Gpu and ArionUI.Rendering.Skia. All of it is open source under Apache-2.0. --prerelease is needed because every version is still a preview.

Your first grid

Three things make a grid: a record type, a list of column definitions, and a source over your data. The control takes the result.

Program.cs (Avalonia)
using ArionUI.Core;               // ListItemsSource
using ArionUI.Presentation;       // GridView, Column, TypedColumn
using ArionUI.Rendering.Avalonia; // ArionGrid

public sealed record Order(int Id, string Customer, string Region, double Amount);

var view = new GridView<Order>(
    [
        TypedColumn.Number<Order>("Id", o => o.Id, format: "0").WithKey("id").WithWidth(80),
        Column.Text<Order>("Customer", o => o.Customer).WithKey("customer").WithWidth(180),
        Column.Text<Order>("Region", o => o.Region).WithKey("region").WithWidth(110),
        TypedColumn.Number<Order>("Amount", o => o.Amount, format: "#,##0.00").WithKey("amount").WithWidth(120),
    ],
    new ListItemsSource<Order>(orders),
    rowHeight: 24)
    .AsDataGrid();

window.Content = new ArionGrid(view);

AsDataGrid() switches on what a data grid is expected to do: sorting on header click, filtering, editing, selection and keyboard navigation. Number columns sort on the value, not on the formatted string, so 9 does not land after 10.

A complete application — window, theme, a million generated rows — is the sample in the repository: samples/ArionUI.Sample.Avalonia.

The same thing in WPF

One namespace differs. Nothing above the host does.

MainWindow.xaml.cs (WPF)
using ArionUI.Rendering.Wpf;      // instead of ArionUI.Rendering.Avalonia

Content = new ArionGrid(view);    // the same `view` as above

Both hosts draw through the same Skia renderer, so the two windows show the same frame. Everything an application needs sits on one facade, grid.Api: state, selection, editing, commands, events, panes and layout — the same on every host.

WinForms, from source

The WinForms host builds and runs but is not a package yet. Clone the repository and reference the project:

Terminal
git clone https://github.com/ArionUI/ArionUI
dotnet add reference ArionUI/src/ArionUI.Rendering.WinForms/ArionUI.Rendering.WinForms.csproj

It targets net10.0-windows10.0.19041, so your project needs that target framework or a later one. The control is called ArionGridControl; the view is the same.

OrdersForm.cs (WinForms)
var view = new GridView<OrderRecord>(
    [
        Column.Text<OrderRecord>("Customer", o => o.Customer).WithKey("customer").WithWidth(180),
        TypedColumn.Number<OrderRecord>("Amount", o => o.Amount, format: "#,##0.00").WithKey("amount"),
    ],
    new ListItemsSource<OrderRecord>(orders))
    .AsDataGrid();

Controls.Add(new ArionGridControl(view)
{
    Dock = DockStyle.Fill,
    VisualTheme = ArionTheme.Light(),
});

Adding a Pro module

Grouping, pivot, charts, timeline, planning, conditional formatting, layout persistence and export are separate packages. They are free during the preview, also in commercial software, and need no licence key.

Terminal
dotnet add package ArionUI.Grouping --prerelease
Program.cs
using ArionUI.Grouping;

view.EnableGrouping();            // group by any column from its header

A module announces itself with one call and is then simply there; without the call the grid shows no half-working controls for it. Each module has its own page under Pro modules.

Building from source

Terminal
git clone https://github.com/ArionUI/ArionUI
cd ArionUI
dotnet build ArionUI.slnx
dotnet run --project samples/ArionUI.Sample.Avalonia

Where to go next

Columns carry most of the behaviour, so that is the next page: Columns. After that, Data sources covers live and server-side data, and The grid API what an application does with a grid at run time. If you would rather see the same records as cards or a tree first, that is Views. The built-in texts are German until you switch them: Localisation.