Saya mencoba membuat gambar untuk ditampilkan di WPF ListView yang ditata seperti WrapPanel seperti yang dijelaskan dalam artikel Tim Avalon ATC lama ini: Cara Membuat Tampilan Kustom .
Ketika saya mencoba untuk mengisi kumpulan ListView dengan LINQ-to-Entities koleksi objek ADO.NET Entity Framework yang saya dapatkan, saya mendapatkan pengecualian berikut:
Pengecualian
Pengumpulan item harus kosong sebelum menggunakan ItemsSource.
Kode saya ...
Dasar visual
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>
Saya meletakkan breakpoint pada baris itu. ListViewImages.ItemsSource
adalah Nothing
sebelum tugas LINQ.
Saya memiliki kesalahan yang sama untuk sementara waktu dalam skenario yang sedikit berbeda. Saya punya
yang saya perbaiki
sumber
Saya baru saja menemukan contoh yang SANGAT berbahaya dari masalah ini. Fragmen asli saya jauh lebih kompleks, yang membuatnya sulit untuk melihat kesalahannya.
Serangga? Ekstra > setelah pembukaan awal
<ItemsControl>
tag ! Yang<
diterapkan pada koleksi Item bawaan. Ketika DataContext kemudian diatur, crashola instan. Jadi lihatlah lebih dari sekedar kesalahan yang mengelilingi anak-anak data spesifik ItemsControl Anda ketika men-debug masalah ini.sumber
>
=> ExceptionSaya juga pada skenario yang berbeda.
Sekarang ketika Anda selesai dengan tag Control.ItemTemplate yang hilang , semuanya menjadi normal:
sumber
<ItemsControl>
.Saya memiliki kesalahan yang sama dalam skenario yang berbeda
Solusinya adalah menambahkan
ItemsControl.ItemsPanel
tag sebelumItemsPanelTemplate
sumber
⚠️ Menyatakan jawabannya secara berbeda ⚠️
💡 Dalam Xaml pastikan tidak ada Node Orangtua yang Hilang atau node yang salah di area yang ditentukan.
Sebagai contoh
Ini Gagal:
Tidak ada orangtua yang tepat untuk simpul anak di bawah ini:
ItemsPanelTemplate
Ini Bekerja:
💡 Ada simpul induk yang benar yang
<ItemsControl.ItemsPanel>
disediakan ^^^. 💡sumber
<DataGrid.Columns>
dan memiliki kolom templat langsung di dalam<DataGrid>
. Kesalahan aneh untuk itu.Pengecualian ini terjadi ketika Anda menambahkan item ke
ItemsSource
berbagai sumber . Jadi, Pastikan Anda tidak melewatkan tag secara tidak sengaja , salah menempatkan tag, menambahkan tag tambahan, atau salah menulis tag.Saat
ItemsControl.ItemsSource
sudah diatur melaluiBinding
, item lain (Kotak, Tombol, ...) tidak dapat ditambahkan ke sumber. Namun saatItemsSource
sedang tidak digunakan , kode berikut diizinkan :perhatikan bagian yang hilang
ItemsSource="{Binding MyItems}"
.sumber
Simpan kolom templat di dalam DataGrid.Columns. Ini membantu saya menyelesaikan masalah ini.
Ref: DataGridTemplateColumn: Pengumpulan item harus kosong sebelum menggunakan ItemsSource.
sumber
Dalam kasus saya, itu hanya StackPanel tambahan di dalam ListView:
Menjadi:
dan semuanya baik-baik saja.
sumber
Dalam kasus saya, itu tidak menggunakan DataTemplate untuk ItemsControl.
Tua:
Baru:
sumber
Milik saya dengan Gaya datagrid. Jika Anda meninggalkan
<DataGrid.RowStyle>
tag di sekitar Style Anda mendapatkan masalah itu. Anehnya itu bekerja untuk sementara waktu seperti itu. Ini kode yang salah.dan yang baik
sumber
Saya memiliki kesalahan yang sama. Masalahnya adalah simbol tambahan ini ">" ditambahkan oleh kesalahan antara tag </ComboBox.SelectedValue> dan </ComboBox>:
dan ini adalah kode yang benar:
sumber
Saya mengalami kesalahan ini ketika mencoba menerapkan menu konteks ke menu saya
TreeView
. Percobaan itu berakhir dengan XAML buruk yang dikompilasi entah bagaimana:Perhatikan baris bermasalah:
ContextMenu="">
.Saya tidak tahu mengapa itu dikompilasi, tapi saya pikir itu layak disebut sebagai alasan untuk pesan pengecualian samar ini. Seperti yang dikatakan Armentage, lihat sekeliling XAML dengan hati-hati, terutama di tempat yang baru saja diedit.
sumber
Saya menemukan kesalahan ini di situasi lain. Saya mencoba untuk mendefinisikan gaya untuk TreeViewItems langsung di dalam
<TreeView>
, tetapi seharusnya tertanam di dalamnya<TreeView.ItemContainerStyle>
.Salah:
Benar:
sumber
Mungkin bukan jawaban yang bermanfaat, tetapi saya memiliki masalah yang sama ketika mengubah urutan kolom dan membuat kesalahan seperti pada contoh berikut. Memiliki banyak kolom, saya memesan ulang dan entah bagaimana menempel satu setelah tag penutup
/DataGrid.Columns
:Bagaimanapun, kehilangan setengah jam karena ini. Semoga ini bisa membantu orang lain.
sumber
Saya mengalami masalah ini karena satu level tag,
<ListView.View>
lebih spesifik, tidak ada di XAML saya.Kode ini menghasilkan kesalahan ini.
Berikut ini memperbaikinya
sumber
Waspadalah terhadap kesalahan ketik! Saya memiliki yang berikut ini
(Perhatikan tailing > , yang ditafsirkan sebagai konten, jadi Anda menyetel konten dua kali ... Butuh waktu sebentar :)
sumber