WPF erreur: « collection Items doit être vide avant d'utiliser ItemsSource. »
-
23-08-2019 - |
Question
Quelqu'un sait pourquoi je continue à recevoir la « collection Items doit être vide avant d'utiliser ItemsSource » -erreur?
Voici le code:
<ScrollViewer Margin="8,8,8,8" Grid.Row="3" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled">
<WrapPanel Orientation="Vertical">
<ItemsControl ItemsSource="{Binding}" x:Name="CustomerList" >>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal">
</WrapPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<View:UserControlCustomerDetails>
</View:UserControlCustomerDetails>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</WrapPanel>
</ScrollViewer>
est ce que je fais dans mon code-behind:
CustomerList.ItemsSource = _mainViewModel.CustomerCollection;
Notez que CustomerCollection est un simple List<Customers
>.
Merci pour votre aide!
Vive
La solution
Est-ce code Copié mot pour mot? Avez-vous vraiment deux équerres droite (>>
) à la fin de la ligne de <ItemsControl...
? Si oui, la deuxième tranche d'angle droit peut être traité comme obtenir le contenu du texte, qui s'ajouté à la collection Items.
Autres conseils
D'abord, enlever ItemsSource = "{} Reliure" de votre ItemsControl. Cela devrait corriger votre erreur je crois.
En second lieu, je ne suis pas sûr si votre WrapPanel va fonctionner comme prévu dans ce cas. De ma compréhension, WrapPanel fera emballage quand il a plusieurs enfants qui se prolongent hors des limites. Dans ce cas, votre WrapPanel a seulement 1 enfant, un ItemsControl.
Il semble que vous utilisez le modèle MVVM. Dans ce cas, vous ne devriez pas attribuer explicitement une collection à la propriété ItemsSource
... à la place, vous devez attribuer un ViewModel au DataContext
du Window
(ou UserControl
). Si votre DataContext
est _mainViewModel
, votre force exécutoire doit être:
<ItemsControl ItemsSource="{Binding CustomerCollection}" ...
Utilisez DataGrid.Items.Clear();
J'espère que ce sera utile ...