为何嵌套在Grid中的ListView滚动功能无法正常工作?
为什么嵌套在Grid中的ListView滚动功能无法正常工作?
嘿,这个问题我之前也踩过坑,根源其实藏在你的Grid行定义里!
你给Grid的RowDefinition设置了Height="Auto",这会让ListView的高度被自动拉伸到和它的内容完全一致——也就是说所有列表项都能完整显示出来,ScrollViewer自然就没有触发滚动的必要了,看起来就像是滚动功能失效了。
解决方法很简单,调整一下RowDefinition的高度就行:
把Height="Auto"改成Height="*",这样这个Grid行会占据Grid的剩余可用空间。当ListView的内容高度超过这个空间时,滚动条就会正常工作啦。
修改后的代码如下:
<Grid> <Grid.RowDefinitions> <RowDefinition Height="*"/> </Grid.RowDefinitions> <ListView Grid.Row="0" ItemsSource="{Binding Person}" ScrollViewer.VerticalScrollBarVisibility="Visible" ScrollViewer.CanContentScroll="True" > <ListView.View> <GridView> <GridViewColumn DisplayMemberBinding="{Binding Path=Id}" Header="Id" Width="100"/> <GridViewColumn DisplayMemberBinding="{Binding Path=Name}" Header="Name" Width="Auto" /> </GridView> </ListView.View> </ListView> </Grid>
另外补充个小细节:如果你的Grid还有其他行,只要保证包含ListView的这一行不是Auto高度(可以是固定数值比如Height="400",或者用*占剩余空间),滚动功能就能正常触发。
内容的提问来源于stack exchange,提问作者Cristian Kaszta
相关产品推荐
相关产品推荐

