如何在XAML中自动调整列表视图的高度

10

我的列表视图对象接收一张图片、一个ID号和一个简介。由于一些简介存在空格返回,因此其大小会有所不同。我注意到ListView有一个可以设置的行高(我现在已将其设置为250),但它只能是固定值。因此,我的网格在高度方面变得太大,导致它溢出并覆盖到下一个列出的项目。有没有办法在XAML中自动调整列表视图的大小?

<ListView ItemsSource="{Binding List}" VerticalOptions="FillAndExpand" RowHeight="250" SelectedItem="SelectedCTR" SeparatorVisibility="None">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>
                    <Image Grid.Row="0" HeightRequest="100" MinimumWidthRequest="160" WidthRequest="160" Source="{Binding AttachedmentData,Converter={StaticResource stringToImage}}" />
                    <StackLayout Grid.Row="1" VerticalOptions="FillAndExpand">
                        <Label Text="{Binding Number}" Font="19"
                             TextColor="#f35e20" />
                        <Label Text="{Binding TrimmedSynopsis}" Font="17"
                             TextColor="#503026" />
                    </StackLayout>
                </Grid>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

这是哪种技术?Xamarin吗? - Nef10
你尝试过不设置高度吗?在 Windows 上的 XAML 中,它会默认按照这种方式工作。 - Ivan Ičin
是的,ListView 有一个默认的固定高度,而且相当小,这使得情况变得更糟,因为有很多溢出。 - walyzfan1
是的,我正在使用Visual Studio中的Xamarin。 - walyzfan1
3个回答

20
你需要将HasUnevenRows设置为True,并且不设置RowHeight属性。
<ListView ItemsSource="{Binding List}" VerticalOptions="FillAndExpand" HasUnevenRows="True" SelectedItem="SelectedCTR" SeparatorVisibility="None">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>
                    <Image Grid.Row="0" HeightRequest="100" MinimumWidthRequest="160" WidthRequest="160" Source="{Binding AttachedmentData,Converter={StaticResource stringToImage}}" />
                    <StackLayout Grid.Row="1" VerticalOptions="FillAndExpand">
                        <Label Text="{Binding Number}" Font="19"
                             TextColor="#f35e20" />
                        <Label Text="{Binding TrimmedSynopsis}" Font="17"
                             TextColor="#503026" />
                    </StackLayout>
                </Grid>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

5

仅设置 ListView 属性 HasUnevenRows="True"


1
当你使用Syncfusion Listview时,
AutoFitMode="DynamicHeight"  VerticalOptions="FillAndExpand"

属性正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接