Sobes.tech
Junior

À quoi sert l'interface INotifyPropertyChanged?

sobes.tech IA

Réponse de l'IA

L'interface INotifyPropertyChanged est utilisée pour notifier les clients (généralement des éléments de l'interface utilisateur) qu'une valeur de propriété a changé. C'est un mécanisme clé pour implémenter le pattern MVVM (Model-View-ViewModel) et la liaison de données dans des frameworks UI comme WPF.

Lorsque la valeur d'une propriété dans une classe qui implémente cette interface change :

  1. L'événement PropertyChanged est déclenché.
  2. Le gestionnaire reçoit des arguments de type PropertyChangedEventArgs, contenant le nom de la propriété modifiée.
  3. Les éléments UI ou autres clients abonnés à cet événement reçoivent la notification et peuvent mettre à jour leur affichage en conséquence.

Exemple d'implémentation :

using System.ComponentModel;
using System.Runtime.CompilerServices;

public class MyData : INotifyPropertyChanged
{
    private string _name;

    public string Name
    {
        get { return _name; }
        set
        {
            if (_name != value) // Vérifie si la valeur a réellement changé
            {
                _name = value;
                OnPropertyChanged(); // Appelle la méthode de notification
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

Dans .NET 6 et supérieur, vous pouvez utiliser l'attribut [ObservableProperty] du package CommunityToolkit.Mvvm pour générer du code boilerplate :

using CommunityToolkit.Mvvm.ComponentModel;

public partial class MyData : ObservableObject
{
    [ObservableProperty]
    private string _name;
}