Saya memiliki ItemsControl
daftar berisi data yang ingin saya virtualisasikan, namun VirtualizingStackPanel.IsVirtualizing="True"
tampaknya tidak berfungsi dengan file ItemsControl
.
Apakah benar demikian atau adakah cara lain untuk melakukan ini yang tidak saya sadari?
Untuk menguji saya telah menggunakan blok kode berikut:
<ItemsControl ItemsSource="{Binding Path=AccountViews.Tables[0]}"
VirtualizingStackPanel.IsVirtualizing="True">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Initialized="TextBlock_Initialized"
Margin="5,50,5,50" Text="{Binding Path=Name}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Jika saya mengubah ItemsControl
ke a ListBox
, saya dapat melihat bahwa Initialized
acara hanya berjalan beberapa kali (margin besar hanya jadi saya hanya perlu melalui beberapa catatan), namun ItemsControl
setiap item diinisialisasi.
Saya telah mencoba menyetel ItemsControlPanelTemplate
ke a VirtualizingStackPanel
tetapi tampaknya tidak membantu.
ItemsControl
keScrollViewer
instread menambahkanScroll
keControlTemplate
?Berdasarkan jawaban DavidN, berikut adalah gaya yang dapat Anda gunakan pada ItemsControl untuk memvirtualisasikannya:
Saya tidak suka saran untuk menggunakan ListBox karena memungkinkan pemilihan baris di mana Anda tidak perlu menginginkannya.
sumber
Hanya saja defaultnya
ItemsPanel
bukanVirtualizingStackPanel
. Anda perlu mengubahnya:sumber