Migliora le prestazioni di DataGrid di WPF

Nella mia applicazione .NET 3.5 WPF , ho un DataGrid WPF che verrà popolato con 500 colonne e 50 righe. Le prestazioni di App sono molto scarse nello scorrimento o quando DataGrid.Items.Refresh() o nella selezione di righe.

In realtà l’applicazione impiegherà circa 20 secondi per aggiornare il layout. Layout_Updated() evento Layout_Updated() verrà triggersto dopo 20 secondi.

Se riduco le colonne a 50 o meno, l’App sarà molto retriggers. Come per i miei risultati, le prestazioni sono direttamente correlate al conteggio delle colonne.

Come posso migliorare le prestazioni di DataGrid ?

Ci sono alcune opzioni che puoi triggersre per aiutarti nell’object DataGrid

 EnableColumnVirtualization = true EnableRowVirtualization = true 

Questi due sono i principali che penso possano aiutare. Quindi prova a rendere il binding asincrono

 ItemsSource="{Binding MyStuff, IsAsync=True}" 

Infine, ho sentito che impostare l’altezza e la larghezza massime può essere d’aiuto anche se supera la dimensione massima dello schermo, ma non ho notato una differenza io stesso (la rivendicazione riguardava la misurazione automatica della dimensione)

 MaxWidth="2560" MaxHeight="1600" 

Inoltre, non inserire mai un DataGrid in un ScrollViewer , perché in pratica si perderà la virtualizzazione. Fammi sapere se questo aiuta!

Controlla se hai proprietà ScrollViewer.CanContentScroll set False . L’impostazione di questa proprietà su false disabilita la virtualizzazione in un modo che ridurrebbe le prestazioni della griglia di dati. Per ulteriori chiarimenti, fai riferimento a questo CanContentScroll

IsAsync = True} “è più veloce dopo aver usato questa dichiarazione, l’applicazione recupera un sacco di record in poco tempo, ha funzionato per me …

Forse prova questo invece di caricare tutte e 50 le righe contemporaneamente

http://www.codeproject.com/Articles/34405/WPF-Data-Virtualization