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
Freigeben: 2024-12-30 13:33:10
Original
897 Leute haben es durchsucht

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
{
    // ...
}
Nach dem Login kopieren

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));
}
Nach dem Login kopieren

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

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

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

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

public event EventHandler ImageFullPath1Changed;
Nach dem Login kopieren

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));
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage