2009-02-20 7 views
6

J'ai une fenêtre utilisant un ListView/GridView WPF lié à un ObservableCollection. La performance est absolument horrible. L'application étouffe en essayant de charger 300 à 400 éléments et les pointes d'utilisation du processeur chaque fois qu'un élément est ajouté/supprimé/modifié. Le profilage ne révèle rien d'évident.WPF listview/gridview performance horrible, suggestions

Quelqu'un a des suggestions?

+0

Le DataTemplate utilisé contient un seul TextBlock. –

Répondre

2

D'abord, utilisez-vous des modèles de données complexes pour chaque ListViewItem? Cela peut être quelque chose de beaucoup d'images, à (anciens) BitmapEffects, à même des propriétés paresseuses qui récupèrent des données à la demande d'une base de données (ce qui peut vous obliger à effectuer plusieurs appels db pour rendre chaque visuel, selon votre modèle de données travaux). Deuxièmement, la liste elle-même est capable d'exécuter ses routines load/add/modified/removed rapidement (ce qui signifie que le problème se produit lors du rendu des données), ou la liste elle-même effectue-t-elle lentement ces tâches? une sorte de problème).

+0

Le DataTemplate utilisé contient un seul TextBlock. –

+0

Aucun appel de base de données n'est effectué. –

+0

Pouvez-vous partager un peu plus de votre code qui reproduit votre problème? Peut-être une nouvelle solution simple qui court le strict minimum pour le provoquer? – Adrian

7

Vérifiez ces propriétés sur:

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

Et une évidence, assurez-vous que vous avez mis à niveau vers Framework 3.5 SP1, il y avait beaucoup de là-bas gains de performance.

De même, il peut être utile d'examiner le contrôle dataGrid de WPF, car une grande partie du travail sur les performances dans .net 3.5 SP1 l'était, de sorte que datagridview aurait de bonnes performances sur les grands ensembles de données.

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