XamlでLabelにバインドするとき、文章中にBindingしたくありませんか?
実はBindingするときに、C#で書くString.format(“価格は{0}です。”, price)みたいに、文章中に値を埋めこむことが出来ます。
使い方
バインディングするときに、StringFormatを後ろに足して設定します。C#のStringFormatと同様に{0}としたところに値が入ります。もちろん書式指定もできて{0:F2}といれることもできます。
{Binding StringFormat='{0:F2}’}
使用例
<VerticalStackLayout BindingContext="{x:Static sys:Math.PI}">
<Label
Text="{Binding StringFormat='π ≒ {0:F4} です.'}"
VerticalOptions="Center"
HorizontalOptions="Center" />
</VerticalStackLayout>
実行結果
バインド文字だけ大きくしたい
Labelを使っていて、バインドする文字だけ変化をつけたいときはFormattedTextが使えます。
FormattedTextは、Labelのプロパティで
使用例のバインド文字を大きくするなら、このように記述します。
<Label
VerticalOptions="Center"
HorizontalOptions="Center" >
<Label.FormattedText>
<FormattedString>
<Span Text="π ≒ " FontSize="40"/>
<Span Text="{Binding StringFormat='{0:F4}'}" FontSize="70"/>
<Span Text=" です." FontSize="40"/>
</FormattedString>
</Label.FormattedText>
</Label>
実行結果
まとめ
・{Binding StringFormat='{0}’}とするとC#のStringFormatのような形でバインドする文字を文に入れられる。
・Label.FormattedTextを使えば、バインドする文字だけ色や大きさを変えられる。