[.NET MAUI] バインド,ラベル,フォーマット [StringFormat]

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を使えば、バインドする文字だけ色や大きさを変えられる。

タイトルとURLをコピーしました