Xaml 以ItemsWrapGrid作为面板模板的listview中内容的完整高度windows 10应用程序

Xaml 以ItemsWrapGrid作为面板模板的listview中内容的完整高度windows 10应用程序,xaml,uwp,windows-10-universal,uwp-xaml,Xaml,Uwp,Windows 10 Universal,Uwp Xaml,我试图让gridview单元格的内容拉伸高度,这样单元格内就不会滚动 这是我的密码: <Grid Grid.Row="1" Padding="50 10 50 10"> <ListView IsTapEnabled="False" Background="White" SizeChanged="categoryListView_SizeChanged" x:Name="categoryListView" H

我试图让gridview单元格的内容拉伸高度,这样单元格内就不会滚动

这是我的密码:

<Grid Grid.Row="1" Padding="50 10 50 10">
    <ListView IsTapEnabled="False"
        Background="White"
        SizeChanged="categoryListView_SizeChanged"
        x:Name="categoryListView"
        Height="auto"
        HorizontalAlignment="Stretch"
        VerticalAlignment="Stretch"
        ItemsSource="{Binding Source={StaticResource stores}, Path=CollectionGroups}"
        ItemTemplate="{StaticResource CategoriesList}">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <ItemsWrapGrid Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
    </ListView>
</Grid>   

这是我的数据模板:

<DataTemplate x:Key="CategoriesList">
    <Grid x:Name="AlphabetGrid" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="0 0 20 0">
        <TextBlock x:Name="CategoryName" FontSize="24" Text='{Binding Group.Key}' Foreground="#412141" FontWeight="Bold"  HorizontalAlignment="Left" TextAlignment="Left"/>
        <Grid Margin="0 30 0 0">
            <ListView ItemsSource="{Binding Group.Items}" HorizontalAlignment="Stretch" VerticalAlignment="Top">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <Grid Margin="0">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*"></ColumnDefinition>
                                <ColumnDefinition Width="4*"></ColumnDefinition>
                            </Grid.ColumnDefinitions>
                            <TextBlock Grid.Column="0" x:Name="unit_number" FontSize="15"  Text='{Binding unit}' Foreground="red"  HorizontalAlignment="Left" TextAlignment="Left"/>
                            <TextBlock Grid.Column="1" x:Name="name" FontSize="15"  Text='{Binding name}' Foreground="red"  HorizontalAlignment="Left" TextAlignment="Left"/>
                        </Grid>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
        </Grid>
    </Grid>
</DataTemplate>

我怎样才能做到这一点?有什么建议吗? 这就是它现在的样子


我可以重现您的问题:当自动计算行高时,ItemsWrapGrid似乎使用了一些奇怪的逻辑。您可以手动设置它的ItemHeight属性以避免此问题,但此解决方案远远不够优雅

或者,您可以使用作为列表视图的项目spanelTemplate,使项目伸展其高度以适合内容

<ListView>
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <controls:WrapPanel/>
        <ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ListView>

然而,您的网格将有大量的空白空间

如果这不是您想要的,您可以通过将包装纸的方向从水平方向更改为垂直方向来消除大部分空白

甚至通过不按类别将项目分组到单独的控件中