Sobes.tech
Junior

Wofür wird die Schnittstelle INotifyPropertyChanged verwendet?

sobes.tech KI

Antwort von AI

Das Interface INotifyPropertyChanged wird verwendet, um Clients (meist UI-Elemente) darüber zu informieren, dass sich der Wert einer Eigenschaft geändert hat. Dies ist ein Schlüsselmechanismus zur Implementierung des MVVM-Musters (Model-View-ViewModel) und der Datenbindung in UI-Frameworks wie WPF.

Wenn sich der Wert einer Eigenschaft in einer Klasse, die dieses Interface implementiert, ändert:

  1. Wird der Event-Handler PropertyChanged aufgerufen.
  2. Der Handler erhält Argumente vom Typ PropertyChangedEventArgs, die den Namen der geänderten Eigenschaft enthalten.
  3. UI-Elemente oder andere Clients, die auf dieses Ereignis abonniert sind, erhalten die Benachrichtigung und können ihre Anzeige entsprechend aktualisieren.

Beispiel für eine Implementierung:

using System.ComponentModel;
using System.Runtime.CompilerServices;

public class MyData : INotifyPropertyChanged
{
    private string _name;

    public string Name
    {
        get { return _name; }
        set
        {
            if (_name != value) // Überprüfen, ob sich der Wert tatsächlich geändert hat
            {
                _name = value;
                OnPropertyChanged(); // Benachrichtigungsmethode aufrufen
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

Ab .NET 6 und höher kann man das Attribut [ObservableProperty] aus dem Paket CommunityToolkit.Mvvm verwenden, um Boilerplate-Code zu generieren:

using CommunityToolkit.Mvvm.ComponentModel;

public partial class MyData : ObservableObject
{
    [ObservableProperty]
    private string _name;
}