Heim >Backend-Entwicklung >C++ >Wie löst man in C# ein Ereignis aus, wenn sich ein Eigenschaftswert ändert?
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!