Sobes.tech
Junior

Milleks kasutatakse liidest INotifyPropertyChanged?

sobes.tech AI

Vastus AI-lt

INotifyPropertyChanged liides kasutatakse selleks, et teavitada kliente (tavaliselt kasutajaliidese elemente), et omaduse väärtus on muutunud. See on põhimehhanism MVVM (Model-View-ViewModel) mustri ja andmete sidumise jaoks UI raamistikus, nagu WPF.

Kui klassis, mis rakendab seda liidest, muutub omaduse väärtus:

  1. Kutsutakse välja PropertyChanged sündmuse käsitleja.
  2. Käsitleja saab PropertyChangedEventArgs tüüpi argumente, mis sisaldavad muudetud omaduse nime.
  3. UI elemendid või teised kliendid, kes on sellele sündmusele tellitud, saavad teate ning võivad uuendada oma kuvamist vastavalt uuele väärtusele.

Näide rakendusest:

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

public class MyData : INotifyPropertyChanged
{
    private string _name;

    public string Name
    {
        get { return _name; }
        set
        {
            if (_name != value) // Kontrollime, kas väärtus on tõesti muutunud
            {
                _name = value;
                OnPropertyChanged(); // Kutsume teavitamise meetodi
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

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

Alates .NET 6 versioonist saab kasutada [ObservableProperty] atribuuti CommunityToolkit.Mvvm paketist, mis automaatselt genereerib boilerplate-koodi:

using CommunityToolkit.Mvvm.ComponentModel;

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