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:
- Viene chiamato il gestore dell'evento
PropertyChanged. - Il gestore riceve argomenti di tipo
PropertyChangedEventArgs, contenenti il nome della proprietà modificata. - 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;
}