根据文本需要的空间自动设置Label HeightRequest

时间:2016-11-04 11:14:35

标签: c# xaml xamarin height uwp

Label内的StackLayout内有Frame

<Frame Grid.Row="0" Margin="0, 0, -10, 0" OutlineColor="Transparent" HasShadow="False" Grid.Column="1" BackgroundColor="{StaticResource rightBubbleColor}">
  <StackLayout>
    <Label
      Style="{StaticResource rightBubbleStyle}"
      TextColor="{StaticResource rightBubbleFontColor}"
      Text="{Binding message}" />
  </StackLayout>
</Frame>

这给了我这个结果:

Label without HeightRequest

这里的问题是最后一条消息实际上有更多文本需要6行来显示整个文本。

如果我为HeightRequest设置Label的值,它也会更改Frame的高度。例如,如果我将值设置为150,我会得到以下结果:

Label with HeightRequest

我需要动态设置HeightRequest的值,具体取决于Text所需的高度。

有谁知道我是如何实现这一目标的(最好是在xaml中),或者这对我的问题是否是错误的解决方法?

编辑1:

Label删除样式并不能解决问题。它只发生在UWP上。请注意,我没有Windows Phone来测试它,问题出现在我的本地计算机上(Windows 10桌面)。

编辑2:

根据Xamarin documentation,高度自动调整,具体取决于内容:

  

当app开发人员将ListView.HasUnevenRows属性设置为true时,列表视图的行为仍取决于ListView.RowHeight属性。首先,如果开发人员未设置ListView.RowHeight属性或将其设置为-1,则会自动调整列表视图项以适合其内容。如上所述,这是ListView.HasUnevenRows值为true的期望行为和预期用例。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。这就是问题所在:

<RowDefinition Height="*" />

我将值设置为Auto,现在它正在运行。奇怪的是它在iOS和Android上有不同的行为。