XAML 当第二个标签比剩余空间长时,StackLayout中的第一个标签将换到第二行

1sbrub3j  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(125)

在一个网格中,我想显示两个标签,一个是静态标签“Reason:“,另一个是绑定标签,显示原因描述,如下所示;

<StackLayout 
    Grid.Row="4" Grid.Column="3"
    Spacing="0" Orientation="Horizontal" HorizontalOptions="StartAndExpand">
    <Label 
        Text="{i18n:Translate reason}" HorizontalOptions="Start" 
        HorizontalTextAlignment="Start"
        Style="{StaticResource ListSubItemStyle}" Margin="0,0,10,0" />
    <Label 
        Text="{Binding ReasonCodeDescription}" HorizontalOptions="StartAndExpand"
        HorizontalTextAlignment="Start" LineBreakMode="TailTruncation"
        Style="{StaticResource ListSubItemStyle}" Margin="0,0,0,0" />
</StackLayout>

当ReasonCodeDescription长于该行上的剩余空间时,它会导致“reason”标签换行到新行;

我试过改变“间距”、“边距”、“填充”、“水平 *”属性和不同的“linebreakmode“都无济于事。
我希望它看起来像第一行,尽管有额外的措辞被截断;

svdrlsy4

svdrlsy41#

您在错误的标签上有“StartAndExpand”。您已告诉第二个标签在发生冲突时要“贪婪”。请将其移至第一个标签:

<Label Text="{i18n:Translate reason}" HorizontalOptions="StartAndExpand" 
<Label Text=... HorizontOptions="Start"

如果该问题无法解决,请使用嵌套网格:

<Grid Grid.Row="4" Grid.Column="3" ColumnDefinitions="Auto,*" />
  <Label Grid.Column="0" Text="{i18n:Translate reason}" .. />
  <Label Grid.Column="1" Text.. />
</Grid>

相关问题