Ich versuche, Bilder in einer WPF-Listenansicht anzuzeigen, die wie ein WrapPanel gestaltet ist, wie in diesem alten Artikel des ATC Avalon-Teams beschrieben: So erstellen Sie eine benutzerdefinierte Ansicht .
Wenn ich versuche, die ListView mit einer von LINQ-to-Entities abgefragten Sammlung von ADO.NET Entity Framework-Objekten zu füllen, wird die folgende Ausnahme angezeigt:
Ausnahme
Die Elementsammlung muss leer sein, bevor ItemsSource verwendet werden kann.
Mein Code…
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>
Ich habe einen Haltepunkt in diese Zeile gesetzt. ListViewImages.ItemsSource
ist Nothing
kurz vor der LINQ-Zuweisung.
Ich hatte den gleichen Fehler für eine Weile in einem etwas anderen Szenario. ich hatte
was ich festlegte zu sein
quelle
Ich bin gerade auf ein SEHR heimtückisches Beispiel für dieses Problem gestoßen. Mein ursprüngliches Fragment war viel komplexer, was es schwierig machte, den Fehler zu erkennen.
Der Fehler? Das Extra > nach dem ersten Eröffnungs-
<ItemsControl>
Tag! Das<
wurde auf die eingebaute Items-Sammlung angewendet. Wenn der DataContext später festgelegt wurde, sofortige Crashola. Achten Sie beim Debuggen dieses Problems auf mehr als nur Fehler in Ihren ItemsControl-spezifischen untergeordneten Daten.quelle
>
=> AusnahmeIch auch in einem anderen Szenario.
Wenn Sie nun das fehlende Tag Control.ItemTemplate vervollständigen , wird alles normal:
quelle
<ItemsControl>
.Ich hatte den gleichen Fehler in einem anderen Szenario
Die Lösung bestand darin, das
ItemsControl.ItemsPanel
Tag vor dem hinzuzufügenItemsPanelTemplate
quelle
⚠️ Um die Antwort anders anzugeben ⚠️
💡 Stellen Sie in Xaml sicher , dass in den definierten Bereichen keine fehlenden übergeordneten Knoten oder falschen Knoten vorhanden sind.
Beispielsweise
Dies schlägt fehl:
Für den untergeordneten Knoten gibt es kein geeignetes übergeordnetes
ItemsPanelTemplate
Element:Das funktioniert:
💡 Es gibt einen richtigen übergeordneten Knoten von
<ItemsControl.ItemsPanel>
bereitgestellt ^^^. 💡quelle
<DataGrid.Columns>
und hatte Vorlagenspalten direkt im Inneren<DataGrid>
. Seltsamer Fehler dafür.Diese Ausnahme tritt auf, wenn Sie Elemente
ItemsSource
über verschiedene Quellen hinzufügen . Stellen Sie also sicher, dass Sie nicht versehentlich ein Tag verpasst, ein Tag falsch platziert, zusätzliche Tags hinzugefügt oder ein Tag falsch geschrieben haben.Während
ItemsControl.ItemsSource
bereits festgelegtBinding
, können andere Elemente (Raster, Schaltfläche, ...) nicht zur Quelle hinzugefügt werden. Doch währendItemsSource
sich nicht in Benutzung der folgende Code erlaubt :Beachten Sie das fehlende
ItemsSource="{Binding MyItems}"
Teil.quelle
Behalten Sie die Vorlagenspalte in DataGrid.Columns bei. Dies hat mir geholfen, dieses Problem zu beheben.
Ref: DataGridTemplateColumn: Die Items-Auflistung muss leer sein, bevor ItemsSource verwendet werden kann.
quelle
In meinem Fall war es nur ein zusätzliches StackPanel in der ListView:
Wird:
und alles ist gut.
quelle
In meinem Fall wurde keine DataTemplate für das ItemsControl verwendet.
Alt:
Neu:
quelle
Meins war mit einem Datagrid-Stil. Wenn Sie die
<DataGrid.RowStyle>
Tags um den Stil weglassen, tritt dieses Problem auf. Seltsam ist, dass es eine Weile so funktioniert hat. Hier ist der schlechte Code.und das gute
quelle
Ich hatte den gleichen Fehler. Das Problem war, dass dieses zusätzliche Symbol ">" versehentlich zwischen den Tags </ComboBox.SelectedValue> und </ ComboBox> hinzugefügt wurde:
und hier ist der richtige Code:
quelle
Ich hatte diesen Fehler, als ich versuchte, Kontextmenüs auf meine anzuwenden
TreeView
. Diese Versuche endeten in einer schlechten XAML, die sich irgendwie zusammensetzte:Beachten Sie die problematische Zeile :
ContextMenu="">
.Ich weiß nicht, warum es kompiliert wurde, aber ich dachte, es ist erwähnenswert als Grund für diese kryptische Ausnahmemeldung. Schauen Sie sich, wie Armentage sagte, die XAML genau an, insbesondere an Stellen, die Sie kürzlich bearbeitet haben.
quelle
Ich bin auf diesen Fehler in einer anderen Situation gestoßen. Ich habe versucht, einen Stil für TreeViewItems direkt in der zu definieren
<TreeView>
, sollte diesen aber stattdessen eingebettet haben<TreeView.ItemContainerStyle>
.Falsch:
Richtig:
quelle
Vielleicht keine so nützliche Antwort, aber ich hatte das gleiche Problem beim Ändern der Spaltenreihenfolge und habe einen Fehler wie im folgenden Beispiel gemacht. Da ich viele Spalten hatte, ordnete ich sie neu und fügte nach dem Schließen des Tags eine ein
/DataGrid.Columns
:Jedenfalls eine halbe Stunde dadurch verloren. Hoffe das hilft anderen.
quelle
Ich bin auf dieses Problem
<ListView.View>
gestoßen, weil in meiner XAML eine Tag-Ebene fehlte , um genau zu sein.Dieser Code hat diesen Fehler erzeugt.
Das Folgende hat es behoben
quelle
Vorsicht vor Tippfehlern! Ich hatte folgendes
(Beachten Sie das Tailing > , das als Inhalt interpretiert wird, sodass Sie den doppelten Inhalt festlegen ... Hat eine Weile gedauert :)
quelle