更改项目显示方式WPF列表框

我有一个显示ListBox的WPF窗口。 我已经更改了ListBox的项目模板,以便列表框显示可以选择的矩形项目。

现在我想修改ListBoxItemsPanelTemplate以便项目以网格显示,而不是垂直或水平列表。 具体来说,我希望第一个项目位于ListBox右上角,然后第二个项目位于其下方,第三个项目位于下方,直到下一个项目的高度使项目列高于ListBox本身的高度。 此时,它应该直接在添加的第一个项目的右侧开始第二列。 如果组合的所有列的总宽度大于ListBox宽度,则应显示水平滚动条。

有没有办法通过修改ItemsPanelTemplate来获得该效果,还是需要扩展ListBox类本身? 在任何一种情况下,我将如何得到它?

谢谢你的帮助!

我没有测试过这个,但我怀疑你可以通过将ListBox使用的默认面板换成WrapPanel来获得所需的效果: