Pregunta

¿Existen en general problemas de rendimiento conocidos en WPF relacionados con el cambio de tamaño de la columna de cuadrícula?

Tengo una aplicación donde necesito hacer algunas cosas en particular en una columna, pero para todas las diferentes soluciones, encuentro que el cambio de tamaño de la columna se ralentiza. Esto se aplica cuando normalmente tengo más de 1000 elementos en mi lista, pero supongo que esto no es demasiado para WPF ... Asi que; La pregunta general es si ha experimentado un cambio de tamaño lento de la columna y si ha encontrado soluciones para esto. ¿Qué lo estaba causando?

Algunos detalles más sobre mi caso particular:

Puedo tener dos cosas diferentes en mis columnas; ComboBox o TextBlock. ComboBox debería llenar toda la columna y seguir el cambio de tamaño de la columna, y al hacer clic en un área vacía de una columna con un TextBlock debería seleccionar la fila. Aquí es donde está el problema. Para todas las soluciones que tengo para esto, el cambio de tamaño de la columna se ralentiza. La única forma de suavizar el cambio de tamaño que he encontrado es agregando un StackPanel fuera de ellos con Orientation = " Horizontal " ;, pero con esto no puedo lograr los estilos descritos anteriormente.

Aquí hay algunas observaciones:

  • Agregar estilo HorizontalContentAlignment = " Estirar " a los elementos de la lista hace que los ComboBoxes se estiren y los TextBlocks puedan hacer clic, pero también el cambio de tamaño de la columna es lento.
  • Agregar fondo = " Transparente " tanto para el StackPanel como para los elementos que se insertan dentro de ellos también resuelve el problema, pero hace que el cambio de tamaño sea lento.
  • Agregar un StackPanel externo con la propiedad Orientation = " Horizontal " facilita el cambio de tamaño, pero no puedo aplicar los estilos como se describe.
¿Fue útil?

Solución

¿Has intentado virtualizar los elementos en ListView? Cuando está virtualizando, el panel de virtualización solo crea las imágenes para los elementos que están en la vista. Esto le permite tener una gran cantidad de elementos sin problemas de rendimiento como usted menciona. Consulte VirtualizingStackPanel para obtener más detalles. También El sistema de diseño . Puede crear sus propios paneles de virtualización. Si mira hacia arriba " virtualizing + wpf " en google encontrarás muchos éxitos para virtualizar Canvas, WrapPanels, etc.

Espero que esto ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top