Sobes.tech
Junior

NotifyPropertyChanged interfeysi nima uchun ishlatiladi?

sobes.tech AI

AIdan javob

INotifyPropertyChanged interfeysidan foydalaniladi mijozlarga (odatda foydalanuvchi interfeys elementlariga) xususiyat qiymati o'zgarganligini bildirish uchun. Bu MVVM (Model-View-ViewModel) shabloni va WPF kabi UI freymvorklarida ma'lumotlarni bog'lash uchun asosiy mexanizmdir.

Bu interfeysni amalga oshirgan sinfda xususiyat qiymati o'zgarganda:

  1. PropertyChanged voqeasi chaqiriladi.
  2. Voqeani boshqaruvchi PropertyChangedEventArgs turidagi argumentlarni oladi, ular o'zgargan xususiyat nomini o'z ichiga oladi.
  3. Bu voqeaga yozilgan UI elementlari yoki boshqa mijozlar bildirishnoma oladi va yangi qiymatga muvofiq o'z ko'rsatmalarini yangilashlari mumkin.

Amalga oshirish misoli:

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

public class MyData : INotifyPropertyChanged
{
    private string _name;

    public string Name
    {
        get { return _name; }
        set
        {
            if (_name != value) // Haqiqatan o'zgarganligini tekshirish
            {
                _name = value;
                OnPropertyChanged(); // Bildirish metodini chaqirish
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

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

.NET 6 va undan yuqori versiyalarda [ObservableProperty] atributidan foydalanish mumkin, bu CommunityToolkit.Mvvm paketidan boilerplate-kodni avtomatik ravishda generatsiya qiladi:

using CommunityToolkit.Mvvm.ComponentModel;

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