获取WrapPanel中的行数?

Amm*_*ark 4 c# wpf

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

<ListBox>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel Grid.IsSharedSizeScope="True" />
        </ItemsPanelTemplate>
    <ListBox.ItemsPanel>
<ListBox>
Run Code Online (Sandbox Code Playgroud)

有没有直接的方式?

Chr*_*isF 6

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

ActualHeight的财产WrapPanel,除由ActualHeight(或项目ItemHeight的属性WrapPanel),你在面板的配售对象的.这应该给你行数:

int numRows = (int)(WrapPanel.ActualHeight / Item.ActualHeight);
Run Code Online (Sandbox Code Playgroud)

要么:

int numRows = (int)(WrapPanel.ActualHeight / WrapPanel.ItemHeight);
Run Code Online (Sandbox Code Playgroud)

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

(您可以使用ActualWidth和执行相同ItemWidth的列数).

  • 克里斯,小心……根据文档(http://msdn.microsoft.com/zh-cn/library/system.windows.controls.wrappanel.aspx),“ItemHeight”实际上是所有项目组合的高度。(至少,这是我的解释。) (2认同)