Sobes.tech
Junior

За какво се използва интерфейсът INotifyPropertyChanged?

sobes.tech AI

Отговор от AI

Интерфейсът INotifyPropertyChanged се използва за уведомяване на клиентите (обикновено елементи на потребителския интерфейс), че стойността на свойство е променена. Това е ключов механизъм за реализиране на патърна MVVM (Model-View-ViewModel) и свързването на данни в UI рамки като WPF.

Когато стойността на свойство в клас, който реализира този интерфейс, се промени:

  1. Обработчикът на събитието PropertyChanged се извиква.
  2. Обработчикът получава аргументи от тип PropertyChangedEventArgs, съдържащи името на промененото свойство.
  3. Елементите на UI или други клиенти, записани към това събитие, получават уведомление и могат да актуализират своето отображение съгласно новата стойност.

Пример за реализация:

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

public class MyData : INotifyPropertyChanged
{
    private string _name;

    public string Name
    {
        get { return _name; }
        set
        {
            if (_name != value) // Проверка дали стойността наистина се е променила
            {
                _name = value;
                OnPropertyChanged(); // Извикване на метода за уведомяване
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

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

В .NET 6 и по-нови версии може да се използва атрибутът [ObservableProperty] от пакета CommunityToolkit.Mvvm за автоматично генериране на boilerplate код:

using CommunityToolkit.Mvvm.ComponentModel;

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