2009-02-20 17 views
6

Ho una finestra che utilizza un ListView/GridView WPF associato a una ObservableCollection. La performance è assolutamente orribile. L'applicazione soffoca il tentativo di caricare 300-400 elementi e picchi di utilizzo della CPU ogni volta che un elemento viene aggiunto/rimosso/modificato. La creazione di profili non rivela nulla di ovvio.WPF listview/gridview performance orribile, suggerimenti

Qualcuno ha qualche suggerimento?

+0

DataTemplate utilizzato contiene un singolo TextBlock. –

risposta

2

Prima ipotesi, stai facendo uso di modelli di dati complessi per ogni ListViewItem? Questo potrebbe essere qualsiasi cosa, da molte immagini, a (vecchi) BitmapEffects, fino alle proprietà anche pigri che recuperano i dati su richiesta da un database (il che potrebbe causare l'esecuzione di molte chiamate db per rendere ogni visual, a seconda di come il tuo modello dati lavori).

Secondo tentativo, la lista stessa è in grado di eseguire rapidamente le sue routine caricamento/aggiunta/modifica/rimozione (ovvero il problema si verifica durante il rendering dei dati) oppure l'elenco esegue questi processi lentamente (indicando che l'elenco sta avendo qualche tipo di problema).

+0

Il DataTemplate in uso contiene un singolo TextBlock. –

+0

Non vengono effettuate chiamate al database. –

+0

Puoi condividere un po 'più del tuo codice che riproduce il tuo problema? Forse una semplice nuova soluzione che esegue il minimo indispensabile per causarlo? – Adrian

7

Controlla queste proprietà fuori:

VirtualizingStackPanel.IsVirtualizing="True" 
VirtualizingStackPanel.VirtualizationMode="Recycling" 
ScrollViewer.IsDeferredScrollingEnabled="True" 
1

E la più ovvia, assicurarsi di avere eseguito l'aggiornamento a .NET 3.5 SP1, c'erano un sacco di miglioramenti delle prestazioni lì.

Inoltre, potrebbe essere utile esaminare il controllo del datagridview di WPF poiché molte delle prestazioni in .net 3.5 SP1 erano tali che la vista dati avrebbe avuto buone prestazioni su dataset di grandi dimensioni.

http://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=25047