Junior
Do czego służy interfejs INotifyPropertyChanged?
sobes.tech AI
Odpowiedź od AI
Interfejs INotifyPropertyChanged służy do powiadamiania klientów (zazwyczaj elementów interfejsu użytkownika), że wartość właściwości uległa zmianie. Jest to kluczowy mechanizm do implementacji wzorca MVVM (Model-View-ViewModel) i wiązania danych w frameworkach UI, takich jak WPF.
Gdy wartość właściwości w klasie implementującej ten interfejs się zmienia:
- Wywoływany jest obsługiwacz zdarzenia
PropertyChanged. - Obsługiwacz otrzymuje argumenty typu
PropertyChangedEventArgs, zawierające nazwę zmienionej właściwości. - Elementy UI lub inni klienci, którzy subskrybują to zdarzenie, otrzymują powiadomienie i mogą zaktualizować swoje wyświetlanie zgodnie z nową wartością.
Przykład implementacji:
using System.ComponentModel;
using System.Runtime.CompilerServices;
public class MyData : INotifyPropertyChanged
{
private string _name;
public string Name
{
get { return _name; }
set
{
if (_name != value) // Sprawdzamy, czy wartość faktycznie się zmieniła
{
_name = value;
OnPropertyChanged(); // Wywołujemy metodę powiadomienia
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
W .NET 6 i nowszych można używać atrybutu [ObservableProperty] z pakietu CommunityToolkit.Mvvm do generowania kodu szablonowego:
using CommunityToolkit.Mvvm.ComponentModel;
public partial class MyData : ObservableObject
{
[ObservableProperty]
private string _name;
}