Xaml 使用“栅格高度自动”时,listview中没有滚动视图

Xaml 使用“栅格高度自动”时,listview中没有滚动视图,xaml,listview,grid,uwp-xaml,Xaml,Listview,Grid,Uwp Xaml,我想显示代码中的控件。但当listview达到屏幕高度时,滚动视图不会显示。如何纠正?请建议 <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="auto" /> <R

我想显示代码中的控件。但当listview达到屏幕高度时,滚动视图不会显示。如何纠正?请建议

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="auto"  />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
    <ListView x:Name="ItemListView" Grid.Row="0"  ScrollViewer.VerticalScrollBarVisibility="Auto"  Width="Auto"  HorizontalAlignment="Stretch">
                <ListView.ItemTemplate>
                    <DataTemplate>
                            <StackPanel HorizontalAlignment="Center" Grid.RowSpan="2" VerticalAlignment="Center" >
                                <TextBlock Text="{Binding SerialNum}" TextAlignment="Left" FontSize="20"  Width="50"/>
                            </StackPanel>
                            <StackPanel >
                                <TextBlock Text="{Binding Name}" FontSize="20" TextAlignment="Center"/>
                            </StackPanel>
                        </Grid>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
        <Border Background="Green"  x:Name="Bg" Grid.Row="1" Tapped="Bg_TappedAsync"  Visibility="Collapsed">
        <TextBlock x:Uid="txt_string Foreground="White" HorizontalAlignment="Center"  VerticalAlignment="Center"/>             
    </Border>
</Grid>
</Grid>
ListView
的内容超出视口边界时,将生效。但在代码段中,第一行的高度设置为
Auto
,这意味着对象的大小应与布局中的可用大小相同,以便第一行的大小适合其内容。而
列表视图
就在这一行中,在这种情况下,
列表视图
将始终有足够的空间来显示
滚动查看器
不需要显示的记录。更多详情请参考

有几种方法可以解决这个问题,例如

  • 列表视图设置固定大小
  • 网格的第一行设置固定大小或星形大小,如下所示

    <Grid>
     <Grid.RowDefinitions>
         <RowDefinition Height="*" />
         <RowDefinition Height="Auto" />
     </Grid.RowDefinitions>
     <ListView
         x:Name="ItemListView"
         Grid.Row="0"
         Width="Auto"
         HorizontalAlignment="Stretch"
         ScrollViewer.VerticalScrollBarVisibility="Auto">
         <ListView.ItemTemplate>             
           ...
         </ListView.ItemTemplate>
     </ListView>
     <Border
         x:Name="Bg"
         Grid.Row="1"
         Background="Green"
         Tapped="zolioBg_TappedAsync"
         Visibility="Collapsed">
         <TextBlock
             x:Uid="txt_string"
             HorizontalAlignment="Center"
             VerticalAlignment="Center"
             Foreground="White" />
     </Border>
    </Grid>
    

    我试过了。滚动可以工作,但有一个问题。当listview显示的项目数非常少时(仅两行),文本框高度需要填充屏幕的剩余位置(listview下方)。怎样才能做到呢?
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions> 
    <ListView
        x:Name="ItemListView"
        Grid.Row="0"
        Width="Auto"
        MaxHeight="800"
        HorizontalAlignment="Stretch"
        ScrollViewer.VerticalScrollBarVisibility="Auto">