Sobes.tech
Junior

Pentru ce este utilizată interfața INotifyPropertyChanged?

sobes.tech AI

Răspuns de la AI

Interfața INotifyPropertyChanged este utilizată pentru a notifica clienții (de obicei elemente ale interfeței utilizatorului) că valoarea unei proprietăți s-a schimbat. Acesta este un mecanism cheie pentru implementarea pattern-ului MVVM (Model-View-ViewModel) și legarea datelor în framework-uri UI precum WPF.

Când valoarea unei proprietăți dintr-o clasă care implementează această interfață se schimbă:

  1. Se invocă handler-ul evenimentului PropertyChanged.
  2. Handler-ul primește argumente de tip PropertyChangedEventArgs, care conțin numele proprietății modificate.
  3. Elementele UI sau alți clienți abonați la acest eveniment primesc notificarea și pot actualiza afișajul în conformitate cu noua valoare.

Exemplu de implementare:

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

public class MyData : INotifyPropertyChanged
{
    private string _name;

    public string Name
    {
        get { return _name; }
        set
        {
            if (_name != value) // Verifică dacă valoarea s-a schimbat cu adevărat
            {
                _name = value;
                OnPropertyChanged(); // Apelează metoda de notificare
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

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

În .NET 6 și versiunile ulterioare, se poate folosi atributul [ObservableProperty] din pachetul CommunityToolkit.Mvvm pentru generarea boilerplate-ului de cod:

using CommunityToolkit.Mvvm.ComponentModel;

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