
Status: written
Volume 2 — Desktop Interfaces
Avalonia written in code: the project without XAML, controls, panels, light and dark themes, architectures (MVC, MVVM) and the threads of the interface, up to a real-time dashboard.
41 chapters · 427 pages. It opens with a review of volume 1 and then builds real applications, control by control: a panel laboratory, a diary, a stock table, a notebook with menu and status bar, a receipt translated into Arabic, a greenhouse with themes. The third part brings order to the code (layers, model, views as classes, state machines, MVVM, dependency injection, automated tests); the fourth teaches how never to block the interface, with the Dispatcher, await in handlers, cancellation and incoming data.
Every window in the book is drawn by the real program, even those after a click: Avalonia runs without a screen and receives simulated mouse and keyboard. The examples of this volume are also available in English.




Table of contents
The table of contents is in Italian, as the volume is written in Italian; the English edition follows.
| Parte | Capitoli | Pagine |
|---|---|---|
| Prima di cominciare | — | 8 |
| Ripasso del volume 1 | — | 18 |
| Prima · Avalonia: le basi in codice | II.1–II.13 | 110 |
| Seconda · Controlli e interfacce | II.14–II.25 | 105 |
| Terza · Architetture | II.26–II.36 | 100 |
| Quarta · Thread, Task e concorrenza nell'interfaccia | II.37–II.40 | 40 |
| Progetto | II.41 | 25 |
| Appendici | A–D | 55 |
| Totale | 41 capitoli e il ripasso | ≈ 460 |
Prima di cominciare ✔
Prefazione · la collana · A chi è rivolto · Come è fatto il libro e i percorsi di lettura · Le regole della casa · Gli strumenti e il codice degli esempi · Convenzioni tipografiche.
Ripasso
Il C# del volume 1 ✔ — quello che i capitoli II.1–II.41 usano dei capitoli I.1–I.18, con il rimando al capitolo che lo spiega per intero.
Parte prima — Avalonia: le basi in codice
- Avalonia e la programmazione desktop multipiattaforma ✔ — cos'è un'interfaccia grafica; Avalonia e le alternative; come disegna; cosa è gratuito e cosa no; perché senza XAML.
- Il progetto Avalonia ✔ — i pacchetti NuGet di Avalonia; il progetto degli esempi; RAVAL.
- Il primo progetto senza XAML ✔ — il
.csproj;Program.Main; la finestra. - Struttura e ciclo di vita ✔ —
AppBuilder;Application.Initialize;OnFrameworkInitializationCompleted; i lifetime; chiudere il programma. - Application, Window e controlli solo in C# ✔ — il contenuto a mano; il contenuto fluente con RAVAL; quando usare l'uno o l'altro.
- Organizzare il progetto ✔ — namespace, cartelle, una classe per vista, nomi.
- Gli eventi di Avalonia ✔ — gestori con un nome; lo stato in una classe; eventi instradati, Tunnel e Bubble; Invio nella
TextBox. - Le proprietà di Avalonia ✔ —
StyledProperty,DirectProperty, proprietà associate, precedenze dei valori, proprietà di stile. - Visual tree e logical tree ✔ — l'albero dei controlli; i due alberi; un solo genitore;
TopLevel. - Il layout e i pannelli ✔ — Measure e Arrange; StackPanel, Grid, DockPanel, WrapPanel, UniformGrid, Border, Canvas.
- Dimensioni, margini, allineamenti ✔ — margini e padding; allineamenti e
Stretch; misure fisse, minime, massime; ridimensionare la finestra. - DPI, scaling e schermi ad alta densità ✔ — pixel indipendenti dal dispositivo;
RenderScaling; immagini nitide; più schermi. - Risorse, temi e stili in C# ✔ — risorse;
ThemeDictionaries; legare una proprietà a una risorsa; stili e selettori scritti in codice.
Parte seconda — Controlli e interfacce
- Testo, etichette, pulsanti e input ✔ —
TextBlock,TextBox,Button,NumericUpDown. - Scelte: CheckBox, RadioButton, liste, selettori ✔ —
CheckBox,ToggleSwitch,RadioButton,ComboBox,ListBox,CalendarDatePicker. - Tabelle e DataGrid ✔ —
DataGrid(MIT): colonne in codice, ordinamento, modifica. - Menu, toolbar, barra di stato, menu contestuali ✔ —
Menu, tasti rapidi,ContextMenu, barre. - TabControl, Expander, navigazione ✔ — schede, sezioni espandibili, pagine dentro una finestra.
- Dialoghi, modali, notifiche, file ✔ — finestre modali con risultato;
StorageProvider; notifiche. - Stili dinamici, temi chiaro e scuro ✔ — cambiare tema; colori del tema in controlli propri.
- Interfacce responsive ✔ — layout che si adattano alla larghezza; finestre piccole e grandi.
- Drag & drop, appunti, selezione ✔ — trascinare file e testo;
Clipboard. - Tastiera, mouse, touch, gesture, fuoco ✔ — eventi del puntatore; gesture; ordine del fuoco.
- Accessibilità ✔ — nomi accessibili, navigazione da tastiera, contrasto.
- Localizzazione ✔ — testi in più lingue, formati di numeri e date, lingue da destra a sinistra.
Parte terza — Architetture
- Perché un'architettura; gli strati ✔ — accoppiamento e coesione; vista, logica, dati; le dipendenze che vanno verso il basso.
- Il modello: dati senza grafica ✔ — record, immutabilità, validazione.
- Viste come classi ✔ — controlli in campi, eventi in metodi, un solo
Mostra(); quando basta questo. - Macchine a stati ✔ — stati, eventi, transizioni, azioni d'ingresso e d'uscita; diagrammi di stato; scriverle con
enumeswitch, con una tabella delle transizioni, con una classe per stato; stati annidati; vantaggi (un comportamento prevedibile, provabile, documentabile), svantaggi (l'esplosione degli stati, la rigidità) e quando usarle. Esempi: il semaforo; la connessione a un dispositivo (spento, connessione, pronto, errore, riconnessione); il lettore multimediale; la procedura guidata di più pagine; l'interfaccia che abilita e disabilita i comandi secondo lo stato; i test di ogni transizione. - MVC: modello, vista, controllore ✔ — chi fa cosa; il flusso di un'azione; una versione semplice per Avalonia scritta in codice; dove sta la logica; errori tipici (il controllore che diventa enorme, la vista che legge il modello di nascosto); quando usarlo. Esempi: la rubrica in MVC; lo stesso esempio con le viste come classi, a confronto.
- MVVM: il modello più usato con Avalonia ✔ — modello, vista, ViewModel; perché i modelli di progetto e la documentazione di Avalonia lo usano (Avalonia però non lo impone);
INotifyPropertyChanged; binding scritti in codice; dove mettere la logica e dove no; una base semplice per i ViewModel, senza librerie, e cosa aggiungono CommunityToolkit.Mvvm e ReactiveUI; quando MVVM conviene e quando è troppo. Esempi: la rubrica in MVVM; un modulo con la validazione; la macchina a stati del capitolo II.29 dentro un ViewModel. Diagrammi: le tre architetture a confronto sullo stesso clic. - Collezioni osservabili, comandi, validazione ✔ —
ObservableCollection;ICommande lo stato abilitato;INotifyDataErrorInfoed errori mostrati nei controlli. - Interfacce, servizi e Dependency Injection ✔ — archivi intercambiabili; iniezione nel costruttore; un contenitore semplice.
- Comunicazione fra componenti ✔ — eventi, messaggi, event aggregator; come evitare che tutti conoscano tutti.
- Configurazione, registro ed errori ✔ — impostazioni in JSON, registro su file, errori mostrati all'utente.
- Provare il codice ✔ — xUnit; logica, macchine a stati e ViewModel senza finestre; viste con Avalonia.Headless.
Parte quarta — Thread, Task e concorrenza
Thread, task e await come strumenti del linguaggio sono nei capitoli I.15–I.18; qui si applicano a una finestra.
- Il thread dell'interfaccia e il Dispatcher ✔ — perché la finestra si blocca; un solo thread per i controlli;
Dispatcher.UIThread,PosteInvokeAsync; i controlli toccati dal thread sbagliato. - await nei gestori ✔ — gestori
async;SynchronizationContexte il ritorno sul thread della finestra;ConfigureAwait(false)nelle librerie; il deadlock di.Resultin una finestra; pulsanti da disabilitare durante il lavoro. - Cancellazione, avanzamento, timer ✔ —
CancellationTokencon il pulsante Annulla,IProgress<T>con la barra,DispatcherTimer,PeriodicTimer. - Lavori lunghi e dati che arrivano ✔ — letture da un altro thread verso la finestra con
Channel<T>; raccolte aggiornate dal thread giusto;Parallele la finestra che resta viva.
Progetto
- Il cruscotto in tempo reale ✔ — elenco di macchine con la loro macchina a stati, schede, grafici con
DrawingContext, letture in un altro thread, MVVM, temi, impostazioni.
Appendici
A. Gli inciampi di Avalonia 12 ✔ · B. Riferimento rapido e le estensioni di RAVAL ✔ · C. Come sono fatte le figure ✔ · D. Glossario ✔
Chapter status: ✔ written · ✎ draft · ○ to be written.
The examples of the volume
Volume 2 — Desktop Interfaces volume 2
The examples of 41 chapters (411 files) and the RAVAL library c8a811e, MIT license. Book c73d832b, 6 November 2026.
SHA-256 25ce11f9d9543f6f3658c7350c80e818d42f15f4925e6282c507e2846f079322Volume 2 — Interfacce desktop volume 2
Gli esempi di 41 capitoli (411 file) e la libreria RAVAL c8a811e, licenza MIT. Libro c73d832b, 6 novembre 2026.
SHA-256 4937c8dcb048618e0bd80ff80ebd11d75e67e3fd91d557345132113ccca75028MIT license. How to open and run them: the Examples page. All the volumes in one package: Download.