.NET MAUI (Multi-platform App UI) è il framework cross-platform di Microsoft per creare app native Android, iOS, macOS e Windows con un unico codebase C# e XAML. In questo articolo vediamo cos'è, come si installa e come si costruisce la prima applicazione.
1. Cos'è .NET MAUI
.NET MAUI rappresenta l'evoluzione moderna di Xamarin.Forms, progettato per consentire la creazione di applicazioni native per Android, iOS, macOS e Windows utilizzando un singolo codebase condiviso. La filosofia alla base di MAUI è massimizzare il riutilizzo del codice mantenendo al contempo l'accesso alle funzionalità specifiche di ogni piattaforma.
L'architettura si basa su un singolo progetto condiviso che può essere compilato per diverse piattaforme target, eliminando la necessità di gestire progetti separati. MAUI sfrutta le moderne funzionalità di .NET: pattern asincroni, LINQ e supporto nativo per architetture ARM64.
Architettura e principi
La struttura architetturale si articola su tre livelli:
- Livello inferiore: renderer specifici per piattaforma che traducono i controlli astratti MAUI nei controlli nativi (controls mapping)
- Livello intermedio: controlli cross-platform, layout e pagine definiti in XAML o C#
- Livello superiore: logica applicativa, servizi e ViewModel secondo il pattern MVVM
Il sistema di Dependency Injection integrato permette di registrare e risolvere servizi in modo trasparente, facilitando architetture pulite e testabili.
Piattaforme supportate
- Android — API 21 (5.0), target consigliato API 35 (Android 15)
- iOS — 12.2, target consigliato iOS 18
- macOS — 12.0 (Monterey), target consigliato macOS 15
- Windows — 10.0.17763.0, target consigliato Windows 11
2. Installazione dell'ambiente di sviluppo
Requisiti di sistema
Per Windows: Windows 10 1809+ (consigliato Windows 11), 8+ GB RAM (consigliati 16 GB), 25-30 GB di spazio disco. Per l'emulatore Android è necessario il supporto alla virtualizzazione hardware (Intel VT-x o AMD-V).
Visual Studio 2026
L'IDE consigliato è Visual Studio 2026. Durante l'installazione selezionare il workload "Sviluppo di interfacce utente applicazioni multipiattaforma .NET" che include:
- .NET SDK 10 (LTS)
- Android SDK (API 35+)
- Android Emulator
- .NET MAUI templates
- XAML designer e Hot Reload
Visual Studio Code
In alternativa, VS Code con le estensioni "C# Dev Kit" e ".NET MAUI" dal marketplace. Richiede setup manuale del SDK .NET e Android SDK.
Verifica dell'installazione
dotnet --version # deve mostrare 10.x
dotnet workload list # deve includere "maui"shellIn caso di problemi:
dotnet workload install maui
dotnet workload updateshell3. La prima applicazione MAUI
Struttura del progetto
MyMauiApp/
├── Platforms/ # Codice specifico per piattaforma
│ ├── Android/
│ ├── iOS/
│ ├── MacCatalyst/
│ └── Windows/
├── Resources/ # Icone, font, immagini, stili
├── MauiProgram.cs # Entry point e DI
├── App.xaml / .cs # Risorse globali
├── AppShell.xaml / .cs # Navigazione
└── MainPage.xaml / .cs # Pagina principaleplaintextMauiProgram.cs
Il cuore della configurazione:
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
});
// builder.Services.AddSingleton<IService, Service>();
return builder.Build();
}
}csharpEsecuzione e Hot Reload
Selezionare il target Android, premere F5. La prima esecuzione richiede più tempo per l'avvio dell'emulatore. Le successive sono rapide grazie all'Hot Reload, che applica le modifiche XAML in tempo reale senza ricompilare.
4. XAML e interfaccia utente
XAML (eXtensible Application Markup Language) è il linguaggio dichiarativo per definire l'UI in MAUI. Separa la definizione visiva dalla logica (code-behind), favorendo manutenibilità e collaborazione.
Una pagina XAML essenziale
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MyMauiApp.MainPage"
Title="Home">
<VerticalStackLayout Spacing="10" Padding="20">
<Label Text="Benvenuto in .NET MAUI!"
FontSize="18"
HorizontalOptions="Center" />
<Button Text="Clicca qui"
HorizontalOptions="Center"
Clicked="OnButtonClicked" />
</VerticalStackLayout>
</ContentPage>xmlMarkup Extensions
Le più usate in MAUI:
StaticResource— recupera una risorsa dal dizionarioBinding— collega una proprietà del controllo a un ViewModelOnPlatform— fornisce valori diversi in base alla piattaforma
I layout principali
- VerticalStackLayout / HorizontalStackLayout: pile verticali o orizzontali (semplici e performanti)
- Grid: struttura a righe e colonne, il più versatile
- AbsoluteLayout: coordinate assolute per overlay e badge
- FlexLayout: simile a CSS Flexbox, per layout responsive
Articolo tratto da: MAUI 101 — malafronte.dev