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

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

有什么直接的方法吗?

最佳答案

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

ActualHeightWrapPanel 属性,将其除以放置在面板中的对象的项目的 ActualHeight (或 ItemHeightWrapPanel 属性)。那应该给你行数:

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

或者:
int numRows = (int)(WrapPanel.ActualHeight / WrapPanel.ItemHeight);

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

(您可以对 ActualWidthItemWidth 执行相同操作以获取列数)。

关于c# - 获取 WrapPanel 中的行数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13483822/

10-11 00:35