web-dev-qa-db-ja.com

StackLayoutによるラベルのラッピング

私はXamarinを使用していて、XAMLでビューを作成していますが、私は一生このラベルを希望どおりにラップできません。ラベルが画面の端に達した場合は、次のように折り返します...

This is the way I want it to look

今はこんな感じ...

This is how it is showing up

これが私のコードです:

<StackLayout Orientation="Vertical" HorizontalOptions="StartAndExpand" BindingContext="{Binding CurrentProviderDetails}" Padding="20,20,20,20" >
  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
      <ColumnDefinition Width="Auto" />
    </Grid.ColumnDefinitions>
<!--Certification Board-->
  <StackLayout Orientation="Horizontal" HorizontalOptions="StartAndExpand" Grid.Row="0" Grid.Column="0" >
    <Label Text="Certification Board: " FontSize="13" HorizontalOptions="Fill" VerticalOptions="CenterAndExpand" />
    <Label Text="{Binding Certification}" VerticalOptions="CenterAndExpand"  HorizontalOptions="Center" Font="17" LineBreakMode="WordWrap"/>
  </StackLayout>
 </Grid>
</StackLayout>

これはグリッド内にある必要はありません。これは私が今試していた方法でした。私の唯一の要件は、 'Certification Board'がラベルであること、そしてWordが画面の最後に到達したときに折り返す値を渡す必要があることです。どんな助けでも素晴らしいです、ありがとう!

17
stepheaw

ラベルにLineBreakMode = "NoWrap"タグを挿入します。このようにして、ラップを回避できます。

しかし、十分なスペースがない場合、Wordはカットされます。

17

水平に配置されたStackLayoutに含まれる両方のラベルを単一のラベルに組み合わせ、LineBreakMode = "WordWrap"を設定することにより、目的の外観を実現できます。 XAMLには、StringFormatと呼ばれる優れた機能があります。これを使用して、バインドされた認証プロパティの前に静的な「認証ボード:」テキストを追加できます。ラベルは次のようになります。

<Label Text="{Binding Certification, StringFormat='Board Certification:{0:F0}'}" LineBreakMode="WordWrap"/>
5
sarahr