Junior
Waarvoor wordt de interface INotifyPropertyChanged gebruikt?
sobes.tech AI
Antwoord van AI
De interface INotifyPropertyChanged wordt gebruikt om klanten (meestal gebruikersinterface-elementen) te informeren dat de waarde van een eigenschap is gewijzigd. Dit is een belangrijk mechanisme voor het implementeren van het MVVM-patroon (Model-View-ViewModel) en data binding in UI-frameworks zoals WPF.
Wanneer de waarde van een eigenschap in een klasse die deze interface implementeert verandert:
- Wordt de event handler
PropertyChangedaangeroepen. - Ontvangt de handler argumenten van het type
PropertyChangedEventArgs, die de naam van de gewijzigde eigenschap bevatten. - UI-elementen of andere clients die op dit evenement zijn geabonneerd, ontvangen de notificatie en kunnen hun weergave bijwerken volgens de nieuwe waarde.
Voorbeeld van implementatie:
using System.ComponentModel;
using System.Runtime.CompilerServices;
public class MyData : INotifyPropertyChanged
{
private string _name;
public string Name
{
get { return _name; }
set
{
if (_name != value) // Controleren of de waarde echt is veranderd
{
_name = value;
OnPropertyChanged(); // Aanroepen van de notificatiemethode
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
In .NET 6 en hoger kan de [ObservableProperty]-attribuut van de CommunityToolkit.Mvvm-pakket worden gebruikt om boilerplate-code te genereren:
using CommunityToolkit.Mvvm.ComponentModel;
public partial class MyData : ObservableObject
{
[ObservableProperty]
private string _name;
}