Skip to content

Desktop XAML

František Bereň edited this page Sep 18, 2026 · 1 revision

Desktop XAML

A desktop UI built on Avalonia, sharing its design language with Web UI — the same tokens generate both, so a desktop app and a web app look like the same product.

Three projects:

Project What it is
Birko.Xaml.Core platform-neutral base view models and theming. No Avalonia dependency
Birko.Xaml.Avalonia the Avalonia skin — token dictionaries and runtime theme switching
Birko.Xaml.Shell the app shell: sidebar chrome, navigation, list/detail/split pages

Why Core is Avalonia-free: so a future WPF skin can reference the same core rather than duplicating it. If you write shared view-model logic, put it there.

Referenced differently from the rest of Birko

⚠️ The Xaml projects are real assemblies (.csproj), not shared projects (.projitems). You reference them normally:

<ItemGroup>
  <ProjectReference Include="$(BirkoSrc)\Birko.Xaml.Core\Birko.Xaml.Core.csproj" />
  <ProjectReference Include="$(BirkoSrc)\Birko.Xaml.Avalonia\Birko.Xaml.Avalonia.csproj" />
</ItemGroup>

$(BirkoSrc) is the same property as everywhere else — see Getting Started step 2.

What the shell gives you

Birko.Xaml.Shell mirrors the web shell's shape: sidebar chrome, navigation, and generic list / detail / split page views bound to the Birko.Xaml.Core base view models. If you have built a CRUD screen in Birko.Web, the desktop equivalent has the same structure.

Theming

Themes come from Birko.DesignTokens — the same tokens.json that generates the web CSS also generates the AXAML resource dictionaries, with runtime switching (light/dark and variants).

⚠️ Do not hand-edit the files under Themes/. They are generated, and a CI gate compares them against a fresh generation from tokens.json. Edit the tokens and regenerate.

Seeing it work

Birko.Xaml.Gallery is a runnable gallery of the controls and themes.

Next

  • Web UI — the same design system on the web
  • Core Concepts — the data layer a desktop app binds to

Clone this wiki locally