Nehmen wir an, ich habe einen Bereich auf meinem Bildschirm, in dem "aktueller Datensatz" bearbeitet wird. Also hat mein Ansichtsmodell eine Klasse mit allen aktuell bearbeiteten Eigenschaften wie:
%Vor%und wir fügen diese Klasse dem View-Modell hinzu:
%Vor%Wie kann ich in meiner Ansicht an die Notes-Eigenschaft von CurrentRecord binden? Ich habe es versucht:
%Vor%Dies funktioniert jedoch nicht. Ich habe auch versucht, DataContext des umgebenden StackPanel zu setzen:
%Vor%Danach probierte ich in meiner Textbox {Binding Notes} und {Binding Path = Notes}, aber keiner von diesen scheint zu funktionieren.
Vielleicht sollte oben wirklich funktionieren und ich mache etwas woanders?
Aktualisieren
Dies geschieht in einem Benutzersteuerelement. Dieses Benutzersteuerelement verfügt über ein separates Ansichtsmodell aus dem übergeordneten Fenster.
%Vor%Ich sehe auch einen verbindlichen Fehler: 'Notizen' Eigenschaft nicht gefunden auf 'Objekt' '' MainViewModel '
Dieses Ansichtsmodell wird im Hauptfenster festgelegt.
um zu überprüfen, ob ich die richtige ViewModel-Bindung habe, habe ich diese Eigenschaft direkt im ViewModel hinzugefügt:
%Vor%und entsprechender Textblock in der Ansicht:
%Vor%Dies funktioniert wie erwartet.
Großer Erfolg
Dank Ryan konnte ich das Problem finden. Es war nicht in der Eigenschaft selbst, sondern in der Art, wie CurrentRecord eingestellt wurde. In meinem Setter rufe ich den INotifyPropertyChange-Handler auf, der aber den alten Namen der Eigenschaft enthält. Daher erhielt die Ansicht keine CurrentRecord-Benachrichtigung, daher war die Notes-Benachrichtigung nicht ausreichend.
Zusammenfassend ist diese Notation korrekt: {Binding Path = CurrentRecord.Notes}
Das obige sollte funktionieren, {Binding Path = CurrentRecord.Notes} ist richtig. Können Sie überprüfen, ob Ihr Datacontext auf Ihr Viewmodel gesetzt ist?
Überprüfen Sie auch, ob Ihr Viewmodel INotifyPropertyChanged implementiert.
bearbeiten: Ich habe gerade ein Beispielprojekt erstellt, um das neu zu erstellen. Keine Notwendigkeit, INotifyPropertyChanged zu implementieren, es funktioniert nur, wenn der Datenkontext auf die VM festgelegt ist.