2011-11-16 4 views
0

Lorsque je définis le .ItemSource() sur un Datagrid, l'appel revient presque instantanément, mais il y a un délai important avant le rendu des lignes. C'est très visible, et je me demande pourquoi cela se produit parce que toutes les autres actions de rendu se produisent instantanément. Par exemple, le défilement est super rapide et la suppression/le réordonnancement des colonnes se fait instantanément. Donc, ce délai ne se produit que lors de la définition d'un nouveau .ItemsSource. La grille de données n'a pas de styles/triggers/templates personnalisés, donc je ne comprends pas pourquoi le rendu prend autant de temps. Si je redimensionne la fenêtre à une très petite taille, le délai est parti, donc ce n'est pas la liaison elle-même qui est lente.ItemsSource rendering delay

+0

Avez-vous réussi à résoudre ce problème? –

+0

@RobotMess Oui, dans une certaine mesure, mais je ne me souviens pas comment. Je crois que cela a quelque chose à voir avec l'utilisation de .DataSource() au lieu de .ItemSource() mais je ne suis pas sûr. – Muis

Répondre

0

Cela dépend de plusieurs raisons: Quelle est la vitesse de votre DataSource, combien y a-t-il de lignes et quelle est la plus importante: utilisez-vous le regroupement dans votre DataGrid? Si tel est le cas, il existe un bogue connu dans le contrôle DataGrid, ce qui le rend très lent lorsqu'il doit traiter de grandes données et de regroupements.

+0

Je n'utilise pas de groupement, et je mets une instruction de débogage dans les propriétés des objets auxquels je lie, et ils sont imprimés immédiatement après avoir défini ItemsSource, le rendu n'est pas terminé bien plus tard, ce qui confirme que ce n'est pas la liaison est lent. – Muis

+0

Est-ce le complexe de rendu (grands formats de données, longues animations, grandes images, dégradés de couleurs, a.s.o.) – Fischermaen

+0

Non, c'est juste la grille de données standard, sans aucune personnalisation. – Muis