Sobes.tech
Junior

Kam naudojama sąsaja INotifyPropertyChanged?

sobes.tech AI

Atsakymas iš AI

INotifyPropertyChanged sąsaja naudojama pranešti klientams (paprastai naudotojo sąsajos elementams), kad savybės reikšmė pasikeitė. Tai yra pagrindinis mechanizmas MVVM (Model-View-ViewModel) šablono ir duomenų susiejimo UI karkasuose, tokiuose kaip WPF.

Kai savybės reikšmė klasėje, įgyvendinančioje šią sąsają, pasikeičia:

  1. Iškviečiamas PropertyChanged įvykio tvarkytojas.
  2. Tvarkytojas gauna PropertyChangedEventArgs tipo argumentus, kuriuose yra pakeistos savybės pavadinimas.
  3. UI elementai arba kiti klientai, prenumeravę šį įvykį, gauna pranešimą ir gali atnaujinti savo atvaizdavimą pagal naują reikšmę.

Pavyzdinė įgyvendinimo schema:

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

public class MyData : INotifyPropertyChanged
{
    private string _name;

    public string Name
    {
        get { return _name; }
        set
        {
            if (_name != value) // Patikriname, ar reikšmė tikrai pasikeitė
            {
                _name = value;
                OnPropertyChanged(); // Kviesime pranešimo metodą
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

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

Nuo .NET 6 ir aukštesnėse versijose galima naudoti [ObservableProperty] atributą iš CommunityToolkit.Mvvm paketo, kuris automatiškai generuoja boilerplate kodą:

using CommunityToolkit.Mvvm.ComponentModel;

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