我在网格中有一个标签。我希望标签是动态的(我不想指定高度)。
<Grid>
<Grid.RowDefinitions>
...
<RowDefinition Height="Auto"/>
...
</Grid.RowDefinitions>
...
<Label Text="{Binding Description}"
LineBreakMode="TailTruncation"/>
...
</Grid>
当我的说明文字很少时,其高度大约为20(1行),如果有很多内容,则最大高度应为40(2行)。
目前,高度设置为自动。它适用于1-2行描述,但如果超过两行,则太大。请问在保持自动高度时应该如何处理大行。
答案 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>