如何更改 ViewCell 中的高度

How Can I Change Height in ViewCell

我正在尝试更改 listview 上的 ViewCell,但下面的代码对我不起作用:

<DataTemplate>
    <ViewCell Height="100">
        <StackLayout Orientation="Horizontal">
            <Image Source="{Binding Seller.Thumbnail}}" Aspect="AspectFit" />
            <StackLayout Orientation="Vertical" >
                <Label Text="{Binding CouponName}" FontAttributes="Bold" FontSize="12" />
                <Label Text="{Binding EndOffer}" FontSize="11" />
            </StackLayout>
        </StackLayout>
    </ViewCell>
</DataTemplate>

Height / Weight 属性大部分是只读的Xamarin.You无法设置 ViewCell 的大小。

但是,您可以更改 StackLayout 的 HeightRequest 属性 来实现您想要的。

设置 ViewCell 的高度应该有效。

尝试将 StackLayout 的 VerticalOptionsHorizontalOptions 设置为 FillAndExpand

  • 如果所有单元格的大小都相同,则设置 ListView.RowHeight 属性 ListView 本身
  • 如果您想改为设置 ViewCell.Height 然后将 ListView.HasUnevenRows 设置为 true (但它对性能有一些影响)

只需将 Grid 的 RowDefinitionHeight 设置为 Auto,不管你的标签在哪里。像这样:

<ListView ItemsSource="{Binding Gastos}" HasUnevenRows="True" SeparatorVisibility="None">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell >
                <Grid Padding="5">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition/>
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>
                    <Label Text="{Binding Id}" VerticalOptions="Start"/>
                    <Label Grid.Column="1" Text="{Binding Descripcion}" LineBreakMode="WordWrap"/>
                </Grid>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

仅当 ListView.HasUnevenRowsTableView.HasUnevenRows 属性 设置为 true 时,为 ViewCell 设置 height 才有效。

2019年正确的现在放这个固定高度:

<ListView RowHeight="100" />

如果您不想固定所有行的高度,请使用:

<ListView HasUnevenRows="true" />