Estoy tratando de hacer que las imágenes se muestren en un WPF ListView con el estilo de un WrapPanel como se describe en este antiguo artículo del Equipo ATC Avalon: Cómo crear una vista personalizada .
Cuando intento completar ListView con una colección consultada de LINQ-to-Entities de objetos de ADO.NET Entity Framework, obtengo la siguiente excepción:
Excepción
La colección de artículos debe estar vacía antes de usar ItemsSource.
Mi código…
Visual Basic
Private Sub Window1_Loaded(...) Handles MyBase.Loaded
ListViewImages.ItemsSource = From g In db.Graphic _
Order By g.DateAdded Ascending _
Select g
End Sub
XAML
<ListView Name="ListViewImages"
SelectionMode="Single"
ItemsSource="{Binding}">
<local:ImageView />
</ListView>
Puse un punto de quiebre en esa línea. ListViewImages.ItemsSource
es Nothing
justo antes de la asignación de LINQ.
Tuve este mismo error por un tiempo en un escenario ligeramente diferente. yo tenía
que arreglé para ser
fuente
Acabo de encontrar un ejemplo MUY insidioso de este problema. Mi fragmento original era mucho más complejo, lo que dificultaba ver el error.
¿El bicho? El extra > después de la
<ItemsControl>
etiqueta de apertura inicial ! Se<
aplicó a la colección de elementos incorporados. Cuando más tarde se configuró el DataContext, crashola instantánea. Por lo tanto, busque más que solo errores alrededor de los elementos secundarios de datos específicos de ItemsControl al depurar este problema.fuente
>
=> ExcepciónYo también en un escenario diferente.
Ahora, cuando complete con la etiqueta que falta Control.ItemTemplate , todo se normaliza:
fuente
<ItemsControl>
.Tuve este mismo error en un escenario diferente
La solución fue agregar la
ItemsControl.ItemsPanel
etiqueta antes deItemsPanelTemplate
fuente
⚠️ Para decir la respuesta de manera diferente ⚠️
X En Xaml, verifique que no haya nodos primarios faltantes o nodos incorrectos en las áreas definidas.
Por ejemplo
Esto está fallando:
No hay un padre adecuado para el
ItemsPanelTemplate
nodo hijo a continuación:Esto esta funcionando:
💡 Hay un nodo padre apropiado de
<ItemsControl.ItemsPanel>
proporcionado ^^^. 💡fuente
<DataGrid.Columns>
y tenía columnas de plantilla directamente dentro<DataGrid>
. Error extraño para eso.Esta excepción ocurre cuando agrega elementos a
ItemsSource
través de diferentes fuentes . Por lo tanto, asegúrese de no haberse perdido accidentalmente una etiqueta, haber perdido una etiqueta, agregado etiquetas adicionales o haya escrito mal una etiqueta.Mientras
ItemsControl.ItemsSource
ya está configuradoBinding
, otros elementos (Cuadrícula, Botón, ...) no se pueden agregar a la fuente. Sin embargo, mientras noItemsSource
esté en uso , se permite el siguiente código :Observe la
ItemsSource="{Binding MyItems}"
parte que falta .fuente
Mantenga la columna de la plantilla dentro de DataGrid.Columns. Esto me ayudó a resolver este problema.
Ref: DataGridTemplateColumn: la colección de elementos debe estar vacía antes de usar ItemsSource.
fuente
En mi caso, era solo un StackPanel adicional dentro de ListView:
Se convierte en:
y todo esta bien
fuente
En mi caso, no estaba usando un DataTemplate para ItemsControl.
Antiguo:
Nuevo:
fuente
La mía tenía un estilo de cuadrícula de datos. Si deja de lado las
<DataGrid.RowStyle>
etiquetas alrededor del estilo, obtendrá ese problema. Lo extraño es que funcionó durante un tiempo así. Aquí está el mal código.y lo bueno
fuente
Yo tenía el mismo error. El problema fue este símbolo adicional ">" agregado por error entre las etiquetas </ComboBox.SelectedValue> y </ComboBox>:
y aquí está el código correcto:
fuente
He tenido este error cuando intenté aplicar menús contextuales a mi
TreeView
. Esos intentos terminaron en un XAML malo que se compiló de alguna manera:Observe la línea problemática:
ContextMenu="">
.No sé por qué se compiló, pero pensé que vale la pena mencionarlo como una razón para este mensaje críptico de excepción. Como dijo Armentage, mire el XAML cuidadosamente, especialmente en los lugares que ha editado recientemente.
fuente
Encontré este error en otra situación. Traté de definir un estilo para TreeViewItems directamente dentro de
<TreeView>
, pero debería haberlo incrustado dentro<TreeView.ItemContainerStyle>
.Incorrecto:
Correcto:
fuente
Quizás no sea una respuesta tan útil, pero tuve el mismo problema al cambiar el orden de las columnas y cometí un error como el de la siguiente muestra. Teniendo muchas columnas, las volví a ordenar y de alguna manera pegué una después de cerrar la etiqueta
/DataGrid.Columns
:De todos modos, perdí media hora debido a esto. Espero que esto ayude a otros.
fuente
Me encontré con este problema porque un nivel de etiqueta,
<ListView.View>
faltaba para ser específico, en mi XAML.Este código produjo este error.
Lo siguiente lo arregló
fuente
¡Cuidado con los errores tipográficos! Tuve lo siguiente
(Tenga en cuenta la cola > , que se interpreta como contenido, por lo que está configurando dos veces el contenido ... Me tomó un tiempo :)
fuente