Junior
За какво се използва интерфейсът INotifyPropertyChanged?
sobes.tech AI
Отговор от AI
Интерфейсът INotifyPropertyChanged се използва за уведомяване на клиентите (обикновено елементи на потребителския интерфейс), че стойността на свойство е променена. Това е ключов механизъм за реализиране на патърна MVVM (Model-View-ViewModel) и свързването на данни в UI рамки като WPF.
Когато стойността на свойство в клас, който реализира този интерфейс, се промени:
- Обработчикът на събитието
PropertyChangedсе извиква. - Обработчикът получава аргументи от тип
PropertyChangedEventArgs, съдържащи името на промененото свойство. - Елементите на 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;
}