如何在 StackLayout/Grid 中为 UWP 创建多行标签?

How to create a multiline label in StackLayout/Grid for UWP?

我正在使用 Xamarin.Forms,但我还没有找到如何为 UWP 使用多行标签。在我的真实项目中,我在 ListView 中的 ViewCell 中有 Grid 中的标签。对于下面的示例,我将其放入 StackLayout:

<StackLayout Orientation="Horizontal" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
    <Label x:Name="titleLabel" Text="some long text" LineBreakMode="WordWrap" />
    <Label x:Name="valueLabel" Text="perhaps a much, much, much, much, much, much, much, much, much longer text" LineBreakMode="WordWrap" />
</StackLayout>

代码适用于 iOS 和 Android,但不适用于 UWP。此处文本被截断。如果只使用一个标签而不使用 StackLayout,它会在 UWP 上正确显示多行文本。

我也尝试使用带有多行 TextBlock 作为标签的自定义渲染器,但结果是一样的 - 文本被截断了。

这是一个错误还是我遗漏了什么?

编辑:

现在我做了一个UWP项目

<StackPanel Orientation="Horizontal">
    <TextBlock Text="oh this is a label" TextWrapping="Wrap" />
    <TextBlock Text="and this should be a very, very, very, very, very, very, very, very, very, very long text" TextWrapping="Wrap" />
</StackPanel>

这里的文字也被截断了。在 UWP 中似乎是不可能的。还有其他的吗solutions/workarounds?

如果为每个标签设置 WidthRequest,则多行标签会正确显示(通过增加高度)。

另一种解决方案是,例如将标签放入 Grid 并使用固定的列宽。

该行为的原因可能是 StackLayout 有一个 default width of Auto(如果没有明确设置)并且标签不知道它有多大。如果您设置宽度,标签可以增长到该尺寸。

This post 让我想到了这个主意。