Ich muss neue UI-Elemente sowie Datenbindung im Code definieren, da sie nach der Laufzeit implementiert werden. Hier ist eine vereinfachte Version von dem, was ich versuche zu tun.
Datenmodell:
%Vor%Bindung im Code:
%Vor%Wenn die Daten zuerst gebunden werden, wird der Textblock mit der richtigen Hausnummer aktualisiert. Wenn ich später die Hausnummer im Code ändere, wird das PropertyChanged-Ereignis des Buchs ausgelöst, aber der Textblock wird nicht aktualisiert. Kann mir jemand sagen warum?
Danke, Ben
Der Grund dafür war, dass die Zeichenfolge, die ich an PropertyChangedEventArgs übergeben habe, nicht GENAU mit dem Namen der Eigenschaft übereinstimmte. Ich hatte so etwas:
%Vor%Wo sollte das sein:
%Vor%Huch! Danke für den Schub in die richtige Richtung.
Stellen Sie sicher, dass Sie die AddressBook
-Referenz aktualisieren, die in der Bindung verwendet wurde, und nicht eine andere AddressBook
-Referenz.
Ich habe Folgendes erhalten, um mit dem von Ihnen angegebenen AddressBook-Code zu arbeiten.
%Vor%Code dahinter:
%Vor%Hinweis: Derselbe Verweis wird im Aktualisierungscode verwendet.
Müssen Sie den Bindungsmodus programmatisch einstellen? Es kann standardmäßig OneTime sein.
Ich habe gerade Ihren Code ausgeschnitten und eingefügt (und ein wenig hinzugefügt), und es funktioniert gut für mich:
%Vor%Wird beim Start 456 angezeigt. Wenn Sie auf die Schaltfläche klicken, wird die Zahl im TextBlock-Inkrement einfach erhöht.
Vielleicht suchen Sie an der falschen Stelle nach der Ursache des Problems?
Umgeht ein Code die Eigenschaft und setzt das Feld ( _houseNumber
) direkt?
Tags und Links wpf c# data-binding inotifypropertychanged