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ă:
- Se invocă handler-ul evenimentului
PropertyChanged. - Handler-ul primește argumente de tip
PropertyChangedEventArgs, care conțin numele proprietății modificate. - 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;
}