WPF Toolkit DataGrid défilement des problèmes de performance - pourquoi?

J'ai un problème de performance avec l' (WPF Toolkit) DataGrid. Il contient environ 1.000 lignes (seulement huit colonnes) et le défilement est horriblement lent et lag. Aussi la charge initiale de la Fenêtre contenant la grille de 5 à 10 secondes.

J'ai fait quelques recherches (à l'aide de google et StackOverflow), mais ne pouvait pas trouver quelque chose en plus de l'avis de tourner sur l'INTERFACE utilisateur de la virtualisation. Mais même après explicitement permettant le défilement continue à être affreusement lent.

Mon DataGrid est lié à un ICollectionView /objet collectionviewsource. Il est défini dans le code XAML de cette façon (les colonnes sont définis de manière explicite, pas de génération automatique):

    <tk:DataGrid x:Name="dataGrid" 
                 ItemsSource="{Binding Path=Bookings}" 
                 AutoGenerateColumns="False" 
                 Grid.Row="1" 
                 EnableRowVirtualization="True" 
                 EnableColumnVirtualization="True"
                 VirtualizingStackPanel.IsVirtualizing="True"
                 VirtualizingStackPanel.VirtualizationMode="Recycling">
            ... 
    </tk:DataGrid>

Le DataContext pour l'ensemble de la Fenêtre est définie à une instance de la classe contenant la ICollectionView le contrôle DataGrid est lié à.

Chaque blog ou un post sur un forum j'ai trouvé faisait l'éloge de la grille de données de performance, donc je suis bien évidemment de faire quelque chose de grave. Depuis que je suis tout à fait nouveau pour WPF en général et en particulier pour le contrôle DataGrid, je n'ai pas la moindre idée de la manière de l'améliorer. Quelqu'avez quelques conseils pour moi? Quelle est votre expérience avec le composant DataGrid? Ce que je fais mal?

Edit: Juste suivi cette de la question des conseils pour définir la Largeur de toutes les colonnes de "Auto". Qui n'a pas changer les mauvaises performances de défilement. Aussi, je ne suis pas en utilisant DataGridTemplateColumns (juste quelques DataGridTextColumns et deux DataGridComboBoxColumns).

Edit2: j'ai utilisé Snoop regarder mon application. Ce que je vois suggère que la virtualisation est en effet à travailler (seulement 19 lignes, et non d'un millier). Mais chaque ligne contient 52 éléments, de sorte que ceux d'ajouter jusqu'à plus d'un millier d'éléments. Peut-être le problème?

Merci beaucoup!

  • J'ai mis à jour ma réponse avec un moyen rapide de vérifier si la virtualisation est de travailler il serait bien si vous pouviez exclure que ce n'est pas le problème.
InformationsquelleAutor andyp | 2009-11-09