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

发布于 2024-08-06 19:04:43 字数 496 浏览 8 评论 0原文

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

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

有没有办法仅通过修改 ItemsPanelTemplate 来获得这种效果,或者我是否需要扩展 ListBox 类本身?无论哪种情况,我该如何解决呢?

感谢您的帮助!

I have a WPF window which displays a ListBox. I've changed the ListBox's item template so that the list box displays rectangular items which can be selected.

Now I'd like to modify the ListBox's ItemsPanelTemplate so that the items are displayed in a grid instead of either a vertical or horizontal list. Specifically I'd like the first item to go in the top right corner of the ListBox and then second item below it and third under that until the height of the next item would make the column of items taller than the height of the ListBox itself. At that point it should start a second column directly to the right of the first item added. If the total width of all of the columns combined was greater than width of the ListBox then a horizontal scroll bar should appear.

Is there a way to get that effect just by modifying the ItemsPanelTemplate or do I need to extend the ListBox class itself? In either case, how would I got about it?

Thanks for your help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

秋意浓 2024-08-13 19:04:43

我还没有对此进行测试,但我怀疑您可以通过将 ListBox 使用的默认面板替换为 WrapPanel 来获得所需的效果:

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

I haven't tested this, but I suspect you can get the desired effect by swapping out the default panel used by the ListBox to a WrapPanel:

<ListBox>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel Orientation="Vertical"/>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
</ListBox>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文