C# 根据文本需要的空间大小自动设置标签高度请求
我在C# 根据文本需要的空间大小自动设置标签高度请求,c#,xaml,xamarin,height,uwp,C#,Xaml,Xamarin,Height,Uwp,我在堆栈布局中有一个标签,框架中有一个标签: <Frame Grid.Row="0" Margin="0, 0, -10, 0" OutlineColor="Transparent" HasShadow="False" Grid.Column="1" BackgroundColor="{StaticResource rightBubbleColor}"> <StackLayout> <Label Style="{StaticResource
堆栈布局中有一个标签
,框架中有一个标签
:
<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>
这给了我一个结果:
这里的问题是,最后一条消息实际上有更多的文本,需要6行来显示整个文本
如果我为标签
的HeightRequest
设置了一个值,它也会更改帧的高度。例如,如果我将值设置为150,则得到以下结果:
我需要根据文本
需要的高度,动态设置HeightRequest
的值
有人知道我如何做到这一点(最好是在xaml中),或者这是一种解决问题的错误方法吗
编辑1:
从标签中删除样式并不能解决问题。它只发生在UWP上。请注意,我没有Windows Phone来测试它,问题发生在我的本地计算机(Windows 10桌面)上
编辑2:
根据,高度应根据内容自动调整大小:
当应用程序开发人员将ListView.Rows属性设置为true时,列表视图的行为仍取决于ListView.RowHeight属性。首先,如果开发人员未设置ListView.RowHeight属性或将其设置为-1,则列表视图项将自动调整大小以适合其内容。如上所述,这是ListView.HasRows值为true的所需行为和预期用例
我找到了解决办法。这就是问题所在:
<RowDefinition Height="*" />
我将该值设置为Auto
,现在它开始工作了。奇怪的是,它在iOS和Android tho上有不同的行为。我做了一个基本的演示。但没有重现你的问题。标签会根据文本体积自动更改其高度。请将完整的XAML代码与样式一起发布好吗?@Evlis谢谢。你测试过UWP吗?对我来说,它在Android和iOS上也能工作,但在UWP上不行。是的,我在UWP上测试过。所以我猜是有别的东西在剪掉标签。@Elvis我编辑了我的问题。风格不是问题那么你能在一个空白的xamarin项目上尝试代码吗?