2009-08-22 1 views
0

Ich versuche, den Inhalt eines ContentPresenter in eine meiner View Model Klasse zu ändern. Ich schaffe es, es richtig gezeigt zu haben, sobald ich diesen Inhalt (Eigenschaft) von meinem Modell ändere, aktualisiert es das ui nicht.WPF Databinding nicht aktualisieren

Die folgenden Zeilen verknüpfen meine Ansicht nach Modellklassen zu ihren jeweiligen ui (ihren Datenkontext automatisch einstellen):

<DataTemplate DataType="{x:Type vm:WelcomePageViewModel}"> 
      <vw:WelcomePage></vw:WelcomePage> 
</DataTemplate> 

<DataTemplate DataType="{x:Type vm:UnitPageViewModel}"> 
      <vw:UnitPage></vw:UnitPage> 
</DataTemplate> 

ich die mit ui Bindung zeigen will:

<ContentPresenter Content="{Binding CurrentChildViewModel}" /> 

Also in meinem ViewModel-Klasse, ich habe eine CurrentChildViewModel-Eigenschaft, die eine Instanz eines closableViewModel ist. Ich weise es zuerst im Konstruktor zu.

Aber jetzt, wenn ich den Wert meines CurrentChildViewModel ändere, wird das ui nicht aktualisiert, selbst wenn die Eigenschaft im Viewmodel geändert wird, bleibt das erste zugewiesene Element erhalten.

Ich sehe nicht, was ich hier falsch mache. Vielleicht verwende ich nicht die richtige Architektur (Methode), um den Inhalt eines Elements zu ändern.

Ihre Hilfe würde sehr geschätzt werden. Vielen Dank im Voraus,

Boris

Antwort

2

Stellen Sie sicher, INotifyPropertyChanged zu implementieren. Das Datenbindungsframework "fragt" nicht ständig nach Änderungen an den Bindungen, sondern stützt sich auf das Eigenschaftsänderungsframework, um die Aktualisierungen für Bindungen auszulösen.

+0

Danke, tatsächlich meine "Basis" abstrakte Klasse implementiert die INotifyPropertyChanged, aber ich habe nicht die OnPropertyChange-Funktion aufgerufen. –