WPF error: “colección de elementos debe estar vacío antes de usar ItemsSource.”
-
23-08-2019 - |
Pregunta
¿Alguien sabe por qué sigo recibiendo la "colección de elementos debe estar vacío antes de usar ItemsSource" -Error?
Este es el código:
<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>
Esto es lo que hago en mi código subyacente:
CustomerList.ItemsSource = _mainViewModel.CustomerCollection;
Tenga en cuenta que es sólo un CustomerCollection List<Customers
sencilla>.
Gracias por su ayuda!
Saludos
Solución
es el código copiado palabra por palabra? ¿Realmente tiene dos soportes en ángulo recto (>>
) al final de la línea <ItemsControl...
? Si es así, el segundo símbolo mayor que podría estar recibiendo tratado como el contenido del texto, que se van añadiendo a la colección de artículos.
Otros consejos
En primer lugar, retire ItemsSource = "{Binding}" de su ItemsControl. Esto debería solucionar el error creo.
En segundo lugar, no estoy seguro de si su WrapPanel va a funcionar como se espera en este caso. Desde mi entender, WrapPanel hará envoltura cuando se tiene varios hijos que se extienden fuera de los límites. En este caso, su WrapPanel solamente tiene 1 hijo, ItemsControl.
Al parecer está utilizando el patrón MVVM. En ese caso, no se debe asignar explícitamente una colección a la propiedad ... ItemsSource
lugar, debe asignar un modelo de vista a la DataContext
del Window
(o UserControl
). Si se DataContext
su _mainViewModel
, su vinculante debe ser:
<ItemsControl ItemsSource="{Binding CustomerCollection}" ...
Uso DataGrid.Items.Clear();
Yo espero que sea útil ...