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

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

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

是否有一种方法只通过修改ItemsPanelTemplate来实现这种效果,还是我需要扩展ListBox类本身?无论哪种情况,我应该如何去做呢?

感谢您的帮助!

1个回答

4

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

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接