2009-05-18 15 views
7

Tenemos una serie de rectángulos producidos dentro de un lienzo y están anidados en este orden ScrollView> Lienzo> VirtualizingStackPanel> Rectángulos en el XAML.WPF Virtualización de un lienzo

Parece que hay poca información sobre Microsoft sobre qué virtualización de senarios es compatible, y en los casos en que no se produce ningún error, simplemente lo trata como un StackPanel estándar.

Dado que nuestra vista tiene aproximadamente 60 rectángulos en la pantalla en un momento dado de un total de aproximadamente 800 en todo el lienzo, los tiempos de carga de aproximadamente 5 minutos son inaceptablemente lentos.

Ya hemos intentado eliminar el ScrollView sin ningún efecto (aparte de eliminar las barras de desplazamiento el rendimiento no mejoró) y eliminando algunos de los otros elementos de anidamiento, el efecto neto parece ser que no se muestra nada o se muestra pero aún lento.

La mejor solución que he encontrado hasta ahora es una pieza de muestra de código de software gratuito VirtualizedCanvas pero es muy muy limitada y no admite nada anidado en ella, de hecho, la única entrada que toma es una colección de elementos UI.

Esta solución básicamente ignora el enlace de datos y requiere que usted le devuelva un Lienzo completo, esto hace que todos nuestros códigos y convertidores existentes sean bastante inútiles, y sería una gran reelaboración para implementar.

¿Hay alguna manera de simplemente cortar Virtualize the Canvas para dibujar solo nuestros 60 elementos en pantalla?

Respuesta

Cuestiones relacionadas