Sobes.tech
Junior

A cosa serve l'interfaccia INotifyPropertyChanged?

sobes.tech AI

Risposta dell'AI

L'interfaccia INotifyPropertyChanged viene utilizzata per notificare ai clienti (solitamente elementi dell'interfaccia utente) che il valore di una proprietà è cambiato. Questo è un meccanismo chiave per implementare il pattern MVVM (Model-View-ViewModel) e il binding dei dati in framework UI come WPF.

Quando il valore di una proprietà in una classe che implementa questa interfaccia cambia:

  1. Viene chiamato il gestore dell'evento PropertyChanged.
  2. Il gestore riceve argomenti di tipo PropertyChangedEventArgs, contenenti il nome della proprietà modificata.
  3. Gli elementi UI o altri clienti iscritti a questo evento ricevono la notifica e possono aggiornare la loro visualizzazione di conseguenza.

Esempio di implementazione:

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

public class MyData : INotifyPropertyChanged
{
    private string _name;

    public string Name
    {
        get { return _name; }
        set
        {
            if (_name != value) // Verifica se il valore è effettivamente cambiato
            {
                _name = value;
                OnPropertyChanged(); // Chiama il metodo di notifica
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

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

In .NET 6 e versioni successive, puoi usare l'attributo [ObservableProperty] del pacchetto CommunityToolkit.Mvvm per generare il boilerplate:

using CommunityToolkit.Mvvm.ComponentModel;

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