Créer une App Moderne — Avalonia UI & .NET

🔄 Module 3 — La révolution MVVM

Faire écouter la vue à l'état applicatif, au lieu de coder des réactions partout.

Créer une App Moderne — Avalonia UI & .NET

📝 Changelog

  • Introduction du pattern MVVM.
  • Installation de CommunityToolkit.Mvvm.
  • Première vraie collection affichée depuis du C# propre.
Créer une App Moderne — Avalonia UI & .NET

Objectif du module

  • Supprimer la dépendance au code-behind pour l'état métier.
  • Introduire un TodoListViewModel.
  • Afficher une ObservableCollection<string> dans la vue.
  • Comprendre le rôle du binding.
Créer une App Moderne — Avalonia UI & .NET

Pourquoi MVVM change tout

  • La vue déclare ce qu'elle affiche.
  • Le ViewModel expose l'état et les actions.
  • Les tests deviennent possibles sans UI.
  • Le code devient modulaire et lisible.
Créer une App Moderne — Avalonia UI & .NET

Installation du toolkit

dotnet add package CommunityToolkit.Mvvm
public partial class TodoListViewModel : ObservableObject
{
    public ObservableCollection<string> Taches { get; } = new();
}
Créer une App Moderne — Avalonia UI & .NET

Le concept clé: le Data Binding

  • {Binding} relie le XAML à une propriété C#.
  • Quand la donnée change, la vue se réactualise.
  • Le XAML n'a plus besoin de connaître l'algorithme.
  • Le ViewModel devient la source de vérité de l'écran.
Créer une App Moderne — Avalonia UI & .NET

La boucle Vue ↔ ViewModel

Créer une App Moderne — Avalonia UI & .NET

Schéma du flux MVVM

Créer une App Moderne — Avalonia UI & .NET

Brancher la collection dans XAML

<ItemsControl ItemsSource="{Binding Taches}" />
Taches.Add("Configurer Avalonia");
Taches.Add("Afficher la liste");
Taches.Add("Préparer les commandes");
Créer une App Moderne — Avalonia UI & .NET

Pièges fréquents

  • Oublier de définir le DataContext.
  • Utiliser List<string> au lieu de ObservableCollection<string>.
  • Modifier une propriété sans notification de changement.
  • Confondre Model métier et ViewModel d'écran.
Créer une App Moderne — Avalonia UI & .NET

Livrable du module

  • La liste à l'écran vient d'une vraie collection C#.
  • La vue ne contient plus de logique métier.
  • Les élèves perçoivent la valeur d'un écran piloté par l'état.