Sobes.tech
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:

  1. Wordt de event handler PropertyChanged aangeroepen.
  2. Ontvangt de handler argumenten van het type PropertyChangedEventArgs, die de naam van de gewijzigde eigenschap bevatten.
  3. 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;
}