Hey Leute, gibt es eine Möglichkeit, ein Ereignis zu erstellen, das ausgelöst wird, wenn sich die Attribute / Feldwerte eines Objekts ändern? Zum Beispiel, wenn das Objekt ein Feld namens
hat %Vor%Und der Benutzer führt eine Aktion aus, die diese Zahl aktualisiert, ein Ereignis würde ausgelöst werden, das alle Textfelder in dem Formular aktualisieren würde, um aktuelle Feldwerte anzuzeigen?
BEARBEITEN: Entschuldigung, für jedes Feld wurden Ja-Eigenschaften erstellt.
Machen Sie es zu einer Eigenschaft und nicht zu einem Feld und implementieren Sie INotifyPropertyChanged
in Ihrer Klasse:
Sie können dann explizit auf das Ereignis PropertyChanged
hören oder eine Datenbindung verwenden, die es automatisch verarbeitet
Sie sollten benutzerdefinierte Getter und Setter (d. h. Eigenschaften) verwenden, um das Ereignis manuell auszulösen. Schau dir diesen Code an, er sollte ziemlich einfach sein:
%Vor%Unsere Membervariable ist privat definiert, so dass niemand außerhalb des Klassen-Widgets darauf zugreifen kann; Sie sind gezwungen, die Eigenschaft Widget_X zu verwenden, und wenn dies der Fall ist, gibt es zwei Fälle:
x
. Nichts zu tun. x
auf denselben Wert wie zuvor. Nichts zu tun. Wir überprüfen es im Setter. x
und ändern sie. Dort feuern wir das Ereignis ab. Es ist wichtig zu prüfen, ob Event-Handler registriert sind (das heißt, unser Event ist nicht null), bevor wir das Event überhaupt aufrufen. In anderen Fällen erhalten wir eine Ausnahme.
Klingt so, als ob Sie die INotifyPropertyChanged -Schnittstelle ausprobieren sollten. Es funktioniert jedoch nicht für Felder, und Sie müssen es manuell implementieren.
Wo werden Sie das verwenden?
Wenn Sie dies in einer Client-Anwendung verwenden möchten, dann ist das Implementieren von INotifyPropertyChanged empfohlene Arbeitsweise.