ご存知のように、StringFormatはWPFでのデータ表現にとって非常に重要です。私の問題は、WPFでマルチバインドするときにStringFormatを使用する方法です。
非常に簡単な例を挙げれば:
AとBで、値が10.255555と25.6999999の変数があります。
そして、私たちはそれらを見せたいです10.2,25.6
?
マルチバインディングでこれを行うにはどうすればよいですか?通常、それはValueConverterを備えたケーキです
このトピックに関するヘルプやアイデアは大歓迎です
StringFormat
にMultiBinding
プロパティを設定するだけです。マルチバインディングの各バインディングにプレースホルダー({0}、{1} ...)を使用し、必要に応じてフォーマット指定子を含めます(たとえば、10進数が1桁の10進数の場合はF1)
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0:F1}{1:F1}">
<Binding Path="A" />
<Binding Path="B" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
先頭の{}
部分は、フォーマット文字列がエスケープシーケンスです(そうでない場合、XAMLパーサーは{
をマークアップ拡張の先頭と見なします)
誰かが「時間形式」を探しているなら、これは私がこの投稿に来た方法である24時間制です:
<TextBlock TextAlignment="Center">
<TextBlock.Text>
<MultiBinding StringFormat="{}{0:HH:mm} - {1:HH:mm}">
<Binding Path="StartTime" />
<Binding Path="EndTime" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
先頭の0:および1:はバインディングへの参照です
[0:hh:mm tt] AM/PMを表示します
単純化するために、2つのTextBlock/Labelsを使用して値を表示できます。
.Net4を使用している場合は、TextBlockのRunInline要素にバインドできます。
<TextBlock>
<Run Text="{Binding A, StringFormat={}{0:F1}}"/>
<Run Text="{Binding B, StringFormat={}{0:F1}}"/>
</TextBlock>