Sobes.tech
Junior

Na čo sa používa rozhranie INotifyPropertyChanged?

sobes.tech AI

Odpoveď od AI

Rozhranie INotifyPropertyChanged sa používa na oznámenie klientom (zvyčajne prvkom používateľského rozhrania), že hodnota vlastnosti sa zmenila. Ide o kľúčový mechanizmus na implementáciu vzoru MVVM (Model-View-ViewModel) a viazania dát v UI frameworkoch ako WPF.

Keď sa hodnota vlastnosti v triede, ktorá toto rozhranie implementuje, zmení:

  1. Volá sa spracovateľ udalosti PropertyChanged.
  2. Spracovateľ dostane argumenty typu PropertyChangedEventArgs, ktoré obsahujú názov zmenenej vlastnosti.
  3. UI prvky alebo iní klienti prihlásení na túto udalosť dostanú oznámenie a môžu aktualizovať svoj zobrazenie v súlade s novou hodnotou.

Príklad implementácie:

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

public class MyData : INotifyPropertyChanged
{
    private string _name;

    public string Name
    {
        get { return _name; }
        set
        {
            if (_name != value) // Kontrola, či sa hodnota naozaj zmenila
            {
                _name = value;
                OnPropertyChanged(); // Zavolanie metódy oznámenia
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

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

V .NET 6 a novších verziách môžete použiť atribút [ObservableProperty] z balíka CommunityToolkit.Mvvm na generovanie boilerplate kódu:

using CommunityToolkit.Mvvm.ComponentModel;

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