Cambiar cómo se muestran los artículos en el cuadro de lista WPF

Tengo una ventana de WPF que muestra un ListBox . He cambiado la plantilla de elementos de ListBox para que el cuadro de lista muestre elementos rectangulares que se pueden seleccionar.

Ahora me gustaría modificar el ItemsPanelTemplate ListBox para que los elementos se muestren en una cuadrícula en lugar de una lista vertical u horizontal. Específicamente, me gustaría que el primer elemento se coloque en la esquina superior derecha del ListBox y luego el segundo elemento debajo de él y el tercero debajo hasta que la altura del siguiente elemento haga que la columna de elementos sea más alta que la altura del mismo ListBox . En ese punto, debe comenzar una segunda columna directamente a la derecha del primer elemento agregado. Si el ancho total de todas las columnas combinadas era mayor que el ancho del ListBox , debería aparecer una barra de desplazamiento horizontal.

¿Hay alguna manera de obtener ese efecto simplemente modificando el ItemsPanelTemplate o necesito extender la clase ListBox ? En cualquier caso, ¿cómo lo obtendría?

¡Gracias por tu ayuda!

No he probado esto, pero sospecho que puede obtener el efecto deseado cambiando el panel predeterminado utilizado por el ListBox a un WrapPanel :