Le Pattern MVVM, ViewModel DataContext question

J'ai besoin de comprendre comment communiquer entre Viewmodel. Je suis nouveau sur MVVM, de sorte s'il vous plaît être gentil.

Voici une bêtise exemple

définitions de classe(à supposer que j'ai accroché à l'Enfant.Événement PropertyChanged dans le ParentViewModel):

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");
        }
    }
}

Voici ce que vous voyez dans le dictionnaire de ressources

<DataTemplate DataType="{x:Type vm:ParentViewModel}">
    <vw:ParentView/>
</DataTemplate>

<DataTemplate DataType="{x:Type vm:ChildViewModel}">
    <vw:ChildView/>
</DataTemplate>

et le code-behind de la ChildView:

public partial class ChildView : UserControl
{
    public QueueView()
    {
        InitializeComponent();
        DataContext = new ChildViewModel();
    }
}

Le problème évident est que lorsque le ChildView est instanciée (via la sélection à partir du DataTemplate), il crée une nouvelle ChildViewModel classe et la ParentViewModel n'y ont pas accès.

Alors, comment puis-je instancier le DataContext de la Vue à l'origine ViewModel qui a causé le DataTemplate pour être sélectionné?

Une correction évidente est de mmerge les propriétés dans le ChildViewModel dans le ParentViewModel, mais je préfère séparer, parce que pour la réutilisation.

Je suis sûr que la réponse est triviale, j'aimerais juste savoir ce que c'est. 🙂

Merci d'avance.

En passant, je suppose que vous avez changé les noms de vos classes afin de simplifier l'exemple... le nom de La classe pour le "ChildView" dans le code derrière est "QueueView" à la place.
Était-ce une faute de frappe?
Oui, c'était une faute de frappe. désolé 🙂

OriginalL'auteur Jose | 2009-05-05