1 回答
TA贡献1877条经验 获得超1个赞
这是因为水平WrapPanel不会拉伸其内容,它要么适合项目,要么溢出到下一行。
一种解决方案是覆盖测量并安排需要更多努力的方法。
另一种是使用UniformGridasItemsPanelTemplate自动拉伸其内容。
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="{Binding NumberOfRows}" Columns="{Binding NumberOfColumns}"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
然后在代码中修改这两个变量(NumberOfRows、NumberOfColumns),例如:
//you need access to listview object
//set the number of columns based on the current width of listview
if(listview.ActualWidth <= 450)
NumberOfColumns = 3;
else if(listview.ActualWidth <= 600)
...
或者如果您可以将其表述为:
NumberOfColumns = (int)Math.listview.ActualWidth / 150;
if(NumberOfColumns < 3) NumberOfColumns = 3;
然后你可以找到行数:
//ImageUserList.Count = number of all items
//listview.ItemsSource.Cast<object>().Count() can be used instead
NumberOfRows = (int)Math.Ceiling(ImageUserList.Count / (double)NumberOfColumns);
确保你DataContext正确以绑定到这两个变量。
- 1 回答
- 0 关注
- 215 浏览
添加回答
举报