我正在尝试使用顶行固定高度的设计,以及填充所有可用剩余空间的ListView。
ListView有一个大的ItemsSource,为了正确使用UI虚拟化,我读到需要指定高度。如果我将它设置为绝对值,它可以正常工作。但是,将其设置为“Stretch”似乎会渲染整个ListView(甚至关闭屏幕)。
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="200"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<ScrollViewer VerticalScrollMode="Enabled" Grid.Row="1">
<ListView VerticalAlignment="Stretch"/>
</ScrollViewer>
</Grid>
如何在不离开屏幕的情况下使ListView占用所有可用空间?
答案 0 :(得分:2)
呈现整个ListView是因为您已将其放在ScrollViewer
内。独立的ScrollViewer对虚拟化一无所知,并且基本上告诉它的内容,它们有无限的空间来渲染自己。
因此,删除ScrollViewer,让ListView成为Grid的直接子项。 ListView有自己的内部ScrollViewer, 处理虚拟化,当ListView获取足够的项目来填充屏幕时,您应该看到它。
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="200"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<ListView VerticalAlignment="Stretch" Grid.Row="1" />
</Grid>