Avalonia solo in codiceEnglish

Volumi

Volume 2 — Interfacce desktop

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.

La galleria dei controlli nel tema chiaro.
La galleria dei controlli nel tema chiaro.
La stessa galleria nel tema scuro.
La stessa galleria nel tema scuro.
Il taccuino: menu, barra degli strumenti e barra di stato.
Il taccuino: menu, barra degli strumenti e barra di stato.
Il cruscotto in tempo reale, il progetto che chiude il volume.
Il cruscotto in tempo reale, il progetto che chiude il volume.

Leggi «Prima di cominciare» Gli esempi del volume

Indice dei capitoli

ParteCapitoliPagine
Prima di cominciare—8
Ripasso del volume 1—18
Prima · Avalonia: le basi in codiceII.1–II.13110
Seconda · Controlli e interfacceII.14–II.25105
Terza · ArchitettureII.26–II.36100
Quarta · Thread, Task e concorrenza nell'interfacciaII.37–II.4040
ProgettoII.4125
AppendiciA–D55
Totale41 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

  1. Avalonia e la programmazione desktop multipiattaforma ✔ — cos'è un'interfaccia grafica; Avalonia e le alternative; come disegna; cosa è gratuito e cosa no; perché senza XAML.
  2. Il progetto Avalonia ✔ — i pacchetti NuGet di Avalonia; il progetto degli esempi; RAVAL.
  3. Il primo progetto senza XAML ✔ — il .csproj; Program.Main; la finestra.
  4. Struttura e ciclo di vita ✔ — AppBuilder; Application.Initialize; OnFrameworkInitializationCompleted; i lifetime; chiudere il programma.
  5. Application, Window e controlli solo in C# ✔ — il contenuto a mano; il contenuto fluente con RAVAL; quando usare l'uno o l'altro.
  6. Organizzare il progetto ✔ — namespace, cartelle, una classe per vista, nomi.
  7. Gli eventi di Avalonia ✔ — gestori con un nome; lo stato in una classe; eventi instradati, Tunnel e Bubble; Invio nella TextBox.
  8. Le proprietà di Avalonia ✔ — StyledProperty, DirectProperty, proprietà associate, precedenze dei valori, proprietà di stile.
  9. Visual tree e logical tree ✔ — l'albero dei controlli; i due alberi; un solo genitore; TopLevel.
  10. Il layout e i pannelli ✔ — Measure e Arrange; StackPanel, Grid, DockPanel, WrapPanel, UniformGrid, Border, Canvas.
  11. Dimensioni, margini, allineamenti ✔ — margini e padding; allineamenti e Stretch; misure fisse, minime, massime; ridimensionare la finestra.
  12. DPI, scaling e schermi ad alta densità ✔ — pixel indipendenti dal dispositivo; RenderScaling; immagini nitide; più schermi.
  13. 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

  1. Testo, etichette, pulsanti e input ✔ — TextBlock, TextBox, Button, NumericUpDown.
  2. Scelte: CheckBox, RadioButton, liste, selettori ✔ — CheckBox, ToggleSwitch, RadioButton, ComboBox, ListBox, CalendarDatePicker.
  3. Tabelle e DataGrid ✔ — DataGrid (MIT): colonne in codice, ordinamento, modifica.
  4. Menu, toolbar, barra di stato, menu contestuali ✔ — Menu, tasti rapidi, ContextMenu, barre.
  5. TabControl, Expander, navigazione ✔ — schede, sezioni espandibili, pagine dentro una finestra.
  6. Dialoghi, modali, notifiche, file ✔ — finestre modali con risultato; StorageProvider; notifiche.
  7. Stili dinamici, temi chiaro e scuro ✔ — cambiare tema; colori del tema in controlli propri.
  8. Interfacce responsive ✔ — layout che si adattano alla larghezza; finestre piccole e grandi.
  9. Drag & drop, appunti, selezione ✔ — trascinare file e testo; Clipboard.
  10. Tastiera, mouse, touch, gesture, fuoco ✔ — eventi del puntatore; gesture; ordine del fuoco.
  11. Accessibilità ✔ — nomi accessibili, navigazione da tastiera, contrasto.
  12. Localizzazione ✔ — testi in più lingue, formati di numeri e date, lingue da destra a sinistra.

Parte terza — Architetture

  1. Perché un'architettura; gli strati ✔ — accoppiamento e coesione; vista, logica, dati; le dipendenze che vanno verso il basso.
  2. Il modello: dati senza grafica ✔ — record, immutabilità, validazione.
  3. Viste come classi ✔ — controlli in campi, eventi in metodi, un solo Mostra(); quando basta questo.
  4. Macchine a stati ✔ — stati, eventi, transizioni, azioni d'ingresso e d'uscita; diagrammi di stato; scriverle con enum e switch, 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.
  5. 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.
  6. 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.
  7. Collezioni osservabili, comandi, validazione ✔ — ObservableCollection; ICommand e lo stato abilitato; INotifyDataErrorInfo ed errori mostrati nei controlli.
  8. Interfacce, servizi e Dependency Injection ✔ — archivi intercambiabili; iniezione nel costruttore; un contenitore semplice.
  9. Comunicazione fra componenti ✔ — eventi, messaggi, event aggregator; come evitare che tutti conoscano tutti.
  10. Configurazione, registro ed errori ✔ — impostazioni in JSON, registro su file, errori mostrati all'utente.
  11. 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.

  1. Il thread dell'interfaccia e il Dispatcher ✔ — perché la finestra si blocca; un solo thread per i controlli; Dispatcher.UIThread, Post e InvokeAsync; i controlli toccati dal thread sbagliato.
  2. await nei gestori ✔ — gestori async; SynchronizationContext e il ritorno sul thread della finestra; ConfigureAwait(false) nelle librerie; il deadlock di .Result in una finestra; pulsanti da disabilitare durante il lavoro.
  3. Cancellazione, avanzamento, timer ✔ — CancellationToken con il pulsante Annulla, IProgress<T> con la barra, DispatcherTimer, PeriodicTimer.
  4. Lavori lunghi e dati che arrivano ✔ — letture da un altro thread verso la finestra con Channel<T>; raccolte aggiornate dal thread giusto; Parallel e la finestra che resta viva.

Progetto

  1. 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.

Esempi-Volume2.zip 500 kB · italianoSHA-256 4937c8dcb048618e0bd80ff80ebd11d75e67e3fd91d557345132113ccca75028

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.

Examples-Volume2.zip 496 kB · EnglishSHA-256 25ce11f9d9543f6f3658c7350c80e818d42f15f4925e6282c507e2846f079322

Licenza MIT. Come si aprono e si avviano: la pagina Esempi. Tutti i volumi in un pacchetto solo: Download.