Possiedo un numero ListBox
che può avere molte righe di record di database con modelli, incluso uno Image
, associato a uno ObservableCollection<MyItem>
. A volte la raccolta potrebbe contenere migliaia di oggetti.ListBox, VirtualizingStackPanel e scorrimento uniforme in WPF
Le prestazioni sono eccezionali, ma lo scorrimento è il comportamento saltuario predefinito. Mi piacerebbe avere uno scorrimento fluido, quindi ho deselezionato ScrollViewer.CanContentScroll
.
Ora lo scorrimento è scorrevole, ma le prestazioni sono orribili: i dati vengono recuperati in una thread separata e il thread termina rapidamente, ma i risultati vengono visualizzati in 10-20 secondi nello ListBox
. Presumo che ciò sia dovuto al fatto che la deselezione di ScrollViewer.CanContentScroll
modifica il sottostante VirtualizingStackPanel
in un normale StackPanel
e quindi sta caricando l'intera raccolta prima di visualizzare i risultati.
Quindi la mia domanda è questa: come posso mantenere lo scorrimento fluido senza sacrificare il comportamento e le prestazioni dello VirtualizingStackPanel
?
http://stackoverflow.com/questions/1977929/wpf-listbox-with-a-listbox-ui-virtualization-and-scrolling/9875475 Virtua lizingPanel.ScrollUnit = "Pixel" – Guillaume
Puoi avere sia lo scorrimento fluido che la virtualizzazione se sei pronto a utilizzare un piccolo trucco. Vedi [questa risposta] (http://stackoverflow.com/questions/1977929/wpf-listbox-with-a-listbox-ui-virtualization-and-scrolling/9875475#9875475) a una domanda simile per i dettagli. –