Sobes.tech
Junior

Kam paredzēta saskarne INotifyPropertyChanged?

sobes.tech AI

Atbilde no AI

INotifyPropertyChanged saskarne tiek izmantota, lai paziņotu klientiem (parasti lietotāja saskarnes elementiem), ka īpašības vērtība ir mainījusies. Šis ir galvenais mehānisms MVVM (Model-View-ViewModel) modeļa un datu sasaistes īstenošanai UI ietvaros, piemēram, WPF.

Kad īpašības vērtība klasē, kas īsteno šo saskarni, mainās:

  1. Izsauc PropertyChanged notikuma apstrādātāju.
  2. Apstrādātājs saņem argumentus PropertyChangedEventArgs tipā, kas satur mainītās īpašības nosaukumu.
  3. UI elementi vai citi klienti, kas ir abonējuši šo notikumu, saņem paziņojumu un var atjaunināt savu attēlojumu atbilstoši jaunajai vērtībai.

Piemēra īstenojums:

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

public class MyData : INotifyPropertyChanged
{
    private string _name;

    public string Name
    {
        get { return _name; }
        set
        {
            if (_name != value) // Pārbaudām, vai vērtība patiešām ir mainījusies
            {
                _name = value;
                OnPropertyChanged(); // Izsauc paziņojuma metodi
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

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

No .NET 6 un jaunākās versijās var izmantot [ObservableProperty] atribūtu no CommunityToolkit.Mvvm pakotnes, kas automātiski ģenerē boilerplate kodu:

using CommunityToolkit.Mvvm.ComponentModel;

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