C# 更改项目在WPF列表框中的显示方式

C# 更改项目在WPF列表框中的显示方式,c#,wpf,listbox,itemspaneltemplate,C#,Wpf,Listbox,Itemspaneltemplate,我有一个WPF窗口,其中显示一个列表框。我已经更改了列表框的项目模板,以便列表框显示可选择的矩形项目 现在我想修改ListBox的ItemsPanelTemplate,使项目显示在网格中,而不是垂直或水平列表中。具体地说,我希望第一个项目放在列表框的右上角,然后第二个项目放在它下面,第三个项目放在它下面,直到下一个项目的高度会使项目列高于列表框本身的高度。此时,它应该直接在添加的第一项右侧开始第二列。如果所有组合列的总宽度大于列表框的宽度,则应显示一个水平滚动条 是否有一种方法可以通过修改Ite

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

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

是否有一种方法可以通过修改
ItemsPanelTemplate
获得这种效果,还是需要扩展
列表框
类本身?不管是哪种情况,我都会怎么做


谢谢你的帮助

我尚未对此进行测试,但我怀疑您可以通过将
列表框使用的默认面板换成
包装面板来获得所需的效果:

<ListBox>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel Orientation="Vertical"/>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
</ListBox>

谢谢您的帮助!这基本上解决了这个问题,但上面的“原样”代码仍然只是创建了一个长的垂直列表。让它创建一个网格的诀窍是将此属性添加到ListBox标记:ScrollViewer.VerticalScrollBarVisibility=“Disabled”