4

我有一个将其 ItemsPanelTemplate 实现为 WrapPanel 的列表框。我需要计算行数以进行导航

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

有什么直接的方法吗?

4

1 回答 1

6

因为这WrapPanel是一个流量控制,您必须执行计算以确定有多少对象适合自己。

取 的ActualHeight属性WrapPanel,除以您要放置在面板中的对象ActualHeight的项目(或ItemHeight的属性)的属性。WrapPanel那应该给你行数:

int numRows = (int)(WrapPanel.ActualHeight / Item.ActualHeight);

或者:

int numRows = (int)(WrapPanel.ActualHeight / WrapPanel.ItemHeight);

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

(您可以对ActualWidthand执行相同的操作ItemWidth来获取列数)。

于 2012-11-20T23:20:10.230 回答