J'ai un objet Client qui a une liste d'ordres. Maintenant, en utilisant le modèle MVVM, j'affiche une liste de clients qui fait partie de CustomerOrderViewModel et de "CustomerOrderView". Les clients sont présentés en listbox comme mis en œuvre ci-dessous:MVVM WPF Création d'éléments enfants
<ListBox BorderThickness="0" Grid.Column="0" Grid.Row="0" ItemsSource="{Binding Path=Customers}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<view:CustomerView />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Maintenant je dois aussi afficher les commandes mais je dois l'afficher en dehors de la zone de liste. Comme ceci:
<StackPanel Grid.Column="1" Grid.Row="0" Margin="10">
<ItemsControl ItemsSource="{Binding Path=Orders}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Name}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
Cela ne fonctionne pas parce qu'il n'y a pas de propriété sur CustomerOrderViewModel pour les commandes. Les commandes est une collection sur l'objet Client. Comment puis-je y arriver?
Voici l'exemple mis à jour:
<ListBox BorderThickness="0" Grid.Column="0" Grid.Row="0" ItemsSource="{Binding Path=Customers}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<view:CustomerView />
<StackPanel Margin="20">
<ItemsControl ItemsSource="{Binding Path=Orders}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<view:OrderView />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Je ne veux pas afficher les commandes de tous les clients. Je veux juste afficher la commande du client actuellement sélectionné.
J'ai mis à jour le poste. Une chose que je suis concerné est pourquoi est-ce que je dois utiliser un ContentControl pourquoi je ne peux pas simplement utiliser un contrôle simple pour afficher toutes les informations. – azamsharp
Toujours dans le lien ci-dessus, la personne utilise la StaticResource. J'utilise la liste personnalisée imbriquée et la liste . L'objet client a une collection de commandes. –
azamsharp
Je pense que je l'ai compris. J'ai dû utiliser le Binding ElementName et le ElementName appartenait au contrôle ListBox. – azamsharp