我有一个将其 ItemsPanelTemplate 实现为 WrapPanel 的列表框。我需要计算行数以进行导航
<ListBox>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Grid.IsSharedSizeScope="True" />
</ItemsPanelTemplate>
<ListBox.ItemsPanel>
<ListBox>
有什么直接的方法吗?
最佳答案
因为 WrapPanel
是一个流控制,所以您必须执行计算以确定适合自己的对象数量。
取 ActualHeight
的 WrapPanel
属性,将其除以放置在面板中的对象的项目的 ActualHeight
(或 ItemHeight
的 WrapPanel
属性)。那应该给你行数:
int numRows = (int)(WrapPanel.ActualHeight / Item.ActualHeight);
或者:
int numRows = (int)(WrapPanel.ActualHeight / WrapPanel.ItemHeight);
如果您设置了任何边距,则此计算将关闭,但您应该能够将它们考虑在内。
(您可以对
ActualWidth
和 ItemWidth
执行相同操作以获取列数)。关于c# - 获取 WrapPanel 中的行数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13483822/