c# - how - Mejorar el rendimiento de WPF DataGrid
simple datagrid example in wpf (3)
Compruebe si tiene propiedad ScrollViewer.CanContentScroll
establecido como False
. Establecer esta propiedad en falso deshabilita la virtualización de una manera que degradará el rendimiento de su Data-grid. Para más aclaración refiérase a este CanContentScroll
En mi aplicación .NET 3.5
WPF
, tengo un DataGrid
WPF
que se rellenará con 500 columnas y 50 filas. El rendimiento de la aplicación es muy pobre en el desplazamiento, o cuando hago DataGrid.Items.Refresh()
o en la selección de filas.
En realidad, la aplicación tardará unos 20 segundos en actualizar el diseño. Layout_Updated()
evento Layout_Updated()
se activará después de 20 segundos.
Si reduzco las columnas a 50 o menos, la aplicación será muy receptiva. Según mis resultados, el rendimiento está directamente relacionado con el recuento de columnas.
¿Cómo puedo mejorar el rendimiento de DataGrid
?
Hay algunas opciones que puede activar para ayudarlo con su objeto DataGrid
EnableColumnVirtualization = true
EnableRowVirtualization = true
Estos dos son los principales que creo que podrían ayudar. A continuación, intente hacer su enlace asíncrono
ItemsSource="{Binding MyStuff, IsAsync=True}"
Y, por último, he escuchado que establecer una altura y un ancho máximos puede ayudar incluso si está por encima del tamaño máximo de la pantalla, pero yo mismo no noté una diferencia (la reclamación tenía que ver con la medición automática del tamaño)
MaxWidth="2560"
MaxHeight="1600"
Además, nunca coloque un DataGrid
en un ScrollViewer
, porque esencialmente perderá la virtualización. ¡Déjeme saber si esto ayuda!
Tal vez intente esto en lugar de cargar las 50 filas a la vez
http://www.codeproject.com/Articles/34405/WPF-Data-Virtualization