Hay varias maneras de lograr lo que estamos tratando de hacer aquí. Si el rendimiento no es un problema, ignoraría la virtualización y probaría el DockPanel
. El inconveniente aquí es que tendría que agregar los elementos en orden en lugar de agregarlos por fila.
Otra opción sería usar dos paneles de pila (uno en cada dirección). Esto aborda el problema de la adición, pero requiere el uso de más paneles.
Ambas opciones anteriores requerirían elementos individuales para tener su altura/ancho establecido.
Una última opción (dependiendo de qué tan grande sea su cuadrícula), sería utilizar una cuadrícula con filas y columnas de tamaño fijo con elementos que abarcan filas (utilizando la propiedad rowspan). El inconveniente de este método es que no conozco ninguna buena forma de crear este control en xaml para números no especificados de filas/columnas, por lo que tendría que crearlo en código para obtener el número necesario de filas/columnas.
Si tiene problemas de rendimiento, puede intentar usar el VirtualizingStackPanel. Si esto aún no cumple con sus requisitos de rendimiento, deberá subclasificar el VirtualizingPanel
y adaptarlo para satisfacer sus necesidades específicas.
Consulte here para obtener más información sobre el rendimiento del panel.
Yo sugeriría probar el método de dos StackPanel
primero, entonces el método VirtualizingStackPanel
y finalmente, si eso no funciona, entonces prueba el relleno VirtualizingPanel
se logra fácilmente mediante el establecimiento de la propiedad Margin
en cada subcontrol.
Para desplazar el uso del ScrollViewer
qué pasa con un panel de envoltura, se puede añadir un visor de desplazamiento para que crear el movimiento en sentido vertical, y siempre y cuando se ponga la pantalla en orden y tener la misma altura el tema de anchura y colocación Sería resuelto por el panel – Clueless