设置Grid时设置标签的最大高度。行高设置为auto

时间:2019-03-07 23:42:11

标签: c# xamarin

我在网格中有一个标签。我希望标签是动态的(我不想指定高度)。

<Grid>
    <Grid.RowDefinitions>
    ...
        <RowDefinition Height="Auto"/>  
    ...
    </Grid.RowDefinitions>
    ...
    <Label Text="{Binding Description}" 
           LineBreakMode="TailTruncation"/>  
    ...
</Grid>

当我的说明文字很少时,其高度大约为20(1行),如果有很多内容,则最大高度应为40(2行)。

目前,高度设置为自动。它适用于1-2行描述,但如果超过两行,则太大。请问在保持自动高度时应该如何处理大行。

1 个答案:

答案 0 :(得分:0)

您可以设置标签的MaxHeight。请参考以下代码。

  

创建标签的子类。并重写方法 OnMeasure

public class MyLabel:Label
{      
    public MyLabel()
    {

    }

    protected override SizeRequest OnMeasure(double widthConstraint, double heightConstraint)
    {

        if(heightConstraint>40)
        {
            return new SizeRequest(new Size(widthConstraint,40));
        }

        return base.OnMeasure(widthConstraint, heightConstraint);
    }


}
  

在xaml.cs中

<Grid>
 <Grid.RowDefinitions>
 ...
    <RowDefinition Height="Auto"/>  
 ...
 </Grid.RowDefinitions>
 ...
 <local:MyLabel Text="{Binding Description}" 
       LineBreakMode="TailTruncation"/>  
 ...
</Grid>