17

ご存知のように、StringFormatはWPFでのデータ表現にとって非常に重要です。私の問題は、WPFでマルチバインドするときにStringFormatを使用する方法です。

非常に簡単な例を挙げれば、次のようになります。

AとBで、値が10.255555と25.6999999の変数があります。

そして、私たちはそれらを見せたい10.2,25.6ですか?

マルチバインディングでこれを行うにはどうすればよいですか?通常、それはValueConverterを備えたケーキです

このトピックに関するヘルプやアイデアは大歓迎です

4

3 に答える 3

58

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 パーサーは{マークアップ拡張機能の先頭であると見なします)。

于 2012-06-13T12:25:47.957 に答える
9

誰かが「時間形式」を探している場合、これは 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] 午前/午後を表示する

于 2013-09-24T06:45:35.710 に答える
6

簡単にするために、2 つの TextBlock/Labels を使用して値を表示できます。

.Net4 を使用している場合は、TextBlock の Run Inline 要素にバインドできます。

<TextBlock>
    <Run Text="{Binding A, StringFormat={}{0:F1}}"/>
    <Run Text="{Binding B, StringFormat={}{0:F1}}"/>
</TextBlock>
于 2012-06-13T15:40:18.747 に答える