Sobes.tech
Junior
219

Для чего используется интерфейс INotifyPropertyChanged?

AI-дан жауап

sobes.tech 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;
}