UserControl en tant que DataTemplate dans ListBox

Je veux réutiliser mon UserControls dans d'autres UserControls comme une page ou une fenêtre comme DataTemplates, dans cet exemple à l'intérieur d'une zone de liste. Tout est MVVM.

J'ai un UserControl appelé "CardControl" pour afficher un simple objet "Carte". Carte a deux Propriétés, "ID" et "CardImage". Les contrôles DataContext est défini par le code XAML. Si j'ai ouvert ce UserControl en VS ou d'un Mélange, il me montre la Carte factice que j'ai défini dans le ViewModel.

Maintenant j'ai un autre UserControl appelé "CardSetControl", qui devrait afficher une collection de Cartes. De sorte que le ViewModel a une propriété de type ObservableCollection<Carte - > appelée "Cartes".

Voici le code:

<ListBox x:Name="MyList" ItemsSource="{Binding CardSet.Cards}">
  <ListBox.ItemTemplate>
    <DataTemplate>
      <StackPanel>

        <!-- WORKING, but not what i want -->
        <TextBlock Text="{Binding ID}" /> //would display ID of Card
        <Image Source="{Binding Image}" /> //would display Image of Card

        <!-- NOT WORKING, but this is how i want it to work -->
        <UserControls:CardControl DataContext="{Binding "Current listbox item as DataContext of CardControl???"}" />

      </StackPanel>
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>

Après avoir lu des tonnes d'articles sur MVVM et DataContext/Liaison je ne l'ai toujours pas le faire fonctionner. Comment est cet ensemble hiérarchique USerControls/DataContexts chose faite le meilleur moyen propre?

source d'informationauteur pDEV