Problem mit der WPF-Datenbindung, die im Code definiert ist und die UI-Elemente nicht aktualisiert

8

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

    
Ben McIntosh 02.01.2009, 11:16
quelle

6 Antworten

10

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.

    
Ben McIntosh 02.01.2009, 12:04
quelle
3

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.

    
Cameron MacFarland 02.01.2009 11:38
quelle
2

Müssen Sie den Bindungsmodus programmatisch einstellen? Es kann standardmäßig OneTime sein.

    
Steven Robbins 02.01.2009 11:24
quelle
2

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?

    
Steven Robbins 02.01.2009 12:00
quelle
1

Sind Sie sicher, dass Sie das gleiche Objekt aktualisieren, das Sie in der Bindung verwendet haben? Auf den ersten Blick sieht nichts schief, also check die einfachen Dinge. :)

    
Giraffe 02.01.2009 11:29
quelle
0

Umgeht ein Code die Eigenschaft und setzt das Feld ( _houseNumber ) direkt?

    
Marc Gravell 02.01.2009 11:30
quelle