Heim >Backend-Entwicklung >C++ >Wie löst man in C# ein Ereignis aus, wenn sich ein Eigenschaftswert ändert?

Wie löst man in C# ein Ereignis aus, wenn sich ein Eigenschaftswert ändert?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-30 13:33:10887Durchsuche

How to Trigger an Event When a Property Value Changes in C#?

So lösen Sie ein Ereignis zur Änderung des Immobilienwerts aus

Problembeschreibung:

Sie möchten um ein Ereignis auszulösen, wenn sich der Wert einer bestimmten Eigenschaft, z. B. ImageFullPath1, ändert. Während INotifyPropertyChanged eine bekannte Lösung ist, bevorzugen Sie einen ereignisbasierten Ansatz.

Antwort:

Um Eigenschaftsänderungsbenachrichtigungen mithilfe von Ereignissen zu implementieren, verwenden Sie die INotifyPropertyChanged-Schnittstelle:

public class MyClass : INotifyPropertyChanged
{
    // ...
}

Die INotifyPropertyChanged-Schnittstelle definiert ein PropertyChanged-Ereignis, das Verbraucher sind abonnieren kann. Um dieses Ereignis auszulösen, implementieren Sie die OnPropertyChanged-Methode:

protected void OnPropertyChanged(PropertyChangedEventArgs e)
{
    // ...
}

protected void OnPropertyChanged(string propertyName)
{
    OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}

Aktualisieren Sie für die ImageFullPath1-Eigenschaft den Setter wie folgt:

public string ImageFullPath1
{
    get { ... }
    set
    {
        if (value != ImageFullPath1)
        {
            ImageFullPath1 = value;
            OnPropertyChanged(nameof(ImageFullPath1));
        }
    }
}

Alternativ können Sie für bestimmte Eigenschaften zusätzliche Ereignisse erstellen :

protected void OnImageFullPath1Changed(EventArgs e)
{
    // ...
}

public event EventHandler ImageFullPath1Changed;

Im Eigenschaftssetzer hinzufügen OnImageFullPath1Changed(EventArgs.Empty) nach OnPropertyChanged.

Verbesserter Code mit .NET 4.5:

Mit .NET 4.5 können Sie das CallerMemberNameAttribute für eine prägnantere Implementierung verwenden:

protected void OnPropertyChanged(
    [System.Runtime.CompilerServices.CallerMemberName] string propertyName = "")
{
    OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}

Das obige ist der detaillierte Inhalt vonWie löst man in C# ein Ereignis aus, wenn sich ein Eigenschaftswert ändert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn