nuits.jp blog

C#, Xamarin, WPFを中心に書いています。Microsoft MVP for Visual Studio and Development Technologies。なお掲載内容は個人の見解であり、所属する企業を代表するものではありません。

Xamarin.FormsのLabelで改行を表示する:XAML編

XAML編と言いつつ、XAML編しかありませんがw
だって、C#のコードからは普通にやればいいだけなので。。。

と言う分けで、簡単に紹介しておきます。

XAMLのLabelなんかで改行を指定したい事ありますよね?
その際に、Labelを複数定義するのも違うなあと言った時の対処方法です。

一つはWPFのTextBlockのように、文字ごとに書式を指定する方法があるのですが、それを利用します。

<Label HorizontalTextAlignment="Center" VerticalTextAlignment="Start">
  <Label.FormattedText>
    <FormattedString>
      <Span Text="Before"/>
      <Span Text="{x:Static x:Environment.NewLine}" />
      <Span Text="After"/>
    </FormattedString>
  </Label.FormattedText>
</Label>

こんな感じ。
詳細はこちらも見てみてください。

ticktack.hatenablog.jp

あとこの方法はトラップがあるので、こちらもお読みください。

nuits.hatenadiary.jp

さて、改行したいだけなら、実のところもっと簡単な方法があります。

<Label Text="Before&#xD;&#xA;After" HorizontalTextAlignment="Center" VerticalTextAlignment="Start"/>

XMLの文字列参照(実態参照だっけ??)を利用します。
&#xD;がCRを表し、&#xA;がLFを表します。

まぁ、環境によって改行コードは変わるので、Environment.NewLine使った方が良いのかもしれませんが、Android・iOS・UWP辺りであれば正しく動作しますし、Xamarin.Formsサポート環境的に、こちらの方式でも良いかもしれません。
お手軽ですし。
その辺りは、最終的には各自でご判断ください。

と言う分けで今日はここまで。
それではまた!