WPF VirtualizingStackPanel para un mayor rendimiento


Me gustaría una descripción simple de cómo implementar un virtualizingstackpanel para un ItemsControl que está enlazado a un ObservableCollection en mi MVVM.

Tengo una instancia ItemsControl para cada pestaña en un control de pestaña, y cambiar de pestaña se vuelve MUY lento cuando el ItemsControl se hace más grande.

¿Qué puedo hacer para acelerar la aplicación?

Abrí un WPF profiler y vi que cada elemento (que es un control de usuario personalizado) mostrado en mi ItemsControl de cada pestaña tenía su propio ContentPresenter. Así que esencialmente tenía 100 presentadores de contenido todos corriendo para 100 elementos en mi ObservableCollection en MVVM. ¿Esto es Corrrect? ¿Cómo puedo optimizar?

Author: Adi Lester, 2009-09-07

2 answers

Hay dos técnicas que podrían ser de gran ayuda. Ambos son descritos muy bien por Bea Stolnitz en su blog .

El primero es Virtualización de la interfaz de usuario y el segundo es Virtualización de datos

En la virtualización de la interfaz de usuario se utilizan cosas como VirtualizingStackPanel para hacer que la interfaz de usuario dibuje menos cosas.

La virtualización de datos se asegura de que no traiga un millón de objetos a la memoria cuando solo va a mostrar 100.

So UI la virtualización minimiza el número de cosas dibujadas y la virtualización de datos minimiza el número de cosas que se podrían dibujar.

Espero que ayude

 50
Author: Mike Two,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-09 20:13:00

Tuve exactamente el mismo problema ind WPF usando TabControl y DataGrid. Al aumentar el tamaño del elemento DataGrid, el cambio de pestañas se vuelve MUY lento ! Después de eso encontré este post leyendo el blog de Bea Stolnitz como se supone en la respuesta anterior. Eso me dio la pista a Google " wpf tabcontrol VirtualizingStackPanel" lo que me da el enlace a DrWPF: http://groups.google.com/group/wpf-disciples/browse_thread/thread/6f3531a1720252dd

Describe exactamente el problema y da la solución :-))

.... El golpe perf es durante la construcción del árbol. Desafortunadamente, si
está utilizando un enfoque MVVM típico con un enlace en el ItemsSource
propiedad del TabControl, el árbol entero debe ser reconstruido cada vez
se selecciona un elemento de pestaña. Esto suele ser una operación muy costosa. ....

 9
Author: user227789,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-08 10:06:54