Ich muss herausfinden, wie man zwischen ViewModels kommuniziert. Ich bin neu in MVVM, also bitte sei nett.MVVM-Muster, ViewModel DataContext-Frage
Hier ist ein verdummtes Beispiel
Klassendefinitionen (davon ausgehen, dass ich das Child.PropertyChanged Ereignis in der ParentViewModel angeschlossen habe):
public class ParentViewModel : ViewModelBase
{
public ChildViewModel Child { get; set; }
}
public class ChildViewModel : ViewModelBase
{
String _FirstName;
public String FirstName
{
get { return _FirstName; }
set
{
_FirstName = value;
OnPropertyChanged("FirstName");
}
}
}
Hier ist, was Sie im Ressourcenverzeichnis sehen
<DataTemplate DataType="{x:Type vm:ParentViewModel}">
<vw:ParentView/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:ChildViewModel}">
<vw:ChildView/>
</DataTemplate>
und der Code-Behind der ChildView:
public partial class ChildView : UserControl
{
public QueueView()
{
InitializeComponent();
DataContext = new ChildViewModel();
}
}
Das offensichtliche Problem ist, dass, wenn die ChildView instanziiert wird (über die Auswahl aus der DataTemplate) erstellt es eine neue ChildViewModel-Klasse und das ParentViewModel hat keinen Zugriff darauf.
Wie kann ich den DataContext der View als das ursprüngliche ViewModel instanziieren, das zur Auswahl der DataTemplate führte?
Eine offensichtliche Lösung besteht darin, die Eigenschaften im ChildViewModel in das ParentViewModel einzufügen, aber ich würde es lieber zur Wiederverwendung trennen.
Ich bin sicher, die Antwort ist trivial, ich möchte nur wissen, was es ist. :)
Vielen Dank im Voraus.
Ich nehme übrigens an, dass Sie die Namen Ihrer Klassen geändert haben, um das Beispiel zu vereinfachen ... Der Klassenname für die "ChildView" in Code hinter ist stattdessen "QueueView". –
War das ein Tippfehler? –
Ja das war ein Tippfehler. Entschuldigung :) – Jose