获取WrapPanel中的行数?

时间:2012-11-20 23:12:10

标签: c# wpf

我有一个List Box,它将ItemsPanelTemplate实现为WrapPanel。我需要计算用于导航目的的行数

<ListBox>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel Grid.IsSharedSizeScope="True" />
        </ItemsPanelTemplate>
    <ListBox.ItemsPanel>
<ListBox>

有没有直接的方式?。

1 个答案:

答案 0 :(得分:6)

因为WrapPanel是一个流量控制,你必须执行计算以确定适合自己的对象数量。

获取ActualHeight的{​​{1}}属性,将其除以对象的WrapPanel项(或ActualHeight的{​​{1}}属性)你正在放置在面板中。这应该给你行数:

ItemHeight

或:

WrapPanel

如果您设置了任何边距,此计算将会关闭,但您应该能够将它们考虑在内。

(您可以对int numRows = (int)(WrapPanel.ActualHeight / Item.ActualHeight); int numRows = (int)(WrapPanel.ActualHeight / WrapPanel.ItemHeight); 执行相同操作以获取列数。