
Stato: scritto
Volume 2 — Interfacce desktop
Avalonia scritta in codice: il progetto senza XAML, i controlli, i pannelli, i temi chiaro e scuro, le architetture (MVC, MVVM) e i thread dell'interfaccia, fino a un cruscotto in tempo reale.
41 capitoli · 427 pagine. Si apre con un ripasso del volume 1 e poi costruisce, controllo per controllo, applicazioni vere: un laboratorio dei pannelli, un'agenda, un magazzino in tabella, un taccuino con menu e barra di stato, la ricevuta tradotta in arabo, la serra con i temi. La terza parte porta l'ordine nel codice (strati, modello, viste come classi, macchine a stati, MVVM, iniezione delle dipendenze, prove automatiche); la quarta insegna a non bloccare mai l'interfaccia, con il Dispatcher, await nei gestori, la cancellazione e i dati che arrivano.
Ogni finestra del libro è disegnata dal programma vero, anche quelle dopo un clic: Avalonia gira senza schermo e riceve mouse e tastiera finti.




Indice dei capitoli
| 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 ✔
Stato dei capitoli: ✔ scritto · ✎ in bozza · ○ da scrivere.
Gli esempi del volume
Volume 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 4937c8dcb048618e0bd80ff80ebd11d75e67e3fd91d557345132113ccca75028Volume 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 25ce11f9d9543f6f3658c7350c80e818d42f15f4925e6282c507e2846f079322Licenza MIT. Come si aprono e si avviano: la pagina Esempi. Tutti i volumi in un pacchetto solo: Download.