2012-06-13 21 views
14

わかっていることですが、StringFormatはWPFのデータ表現にとって非常に重要です。私の問題は、WPFでマルチバインドするときにStringFormatを使用する方法です。値我々は彼ら10.2,25.6に表示したい10.255555や25.6999999WPFのマルチバインディングでstringformatを使用する方法XAML

され、AとBとしている私たちは、変数を持ってい

、:

私は非常に簡単な例を与えますか?

マルチバインディングでどうすればいいですか?通常は、このトピック上の任意のヘルプやアイデアがgreately

答えて

48

を理解されるであろうだけでMultiBindingStringFormatプロパティを設定しValueConverter

とケーキの一部です。で{}一部を

<TextBlock> 
    <TextBlock.Text> 
     <MultiBinding StringFormat="{}{0:F1}{1:F1}"> 
      <Binding Path="A" /> 
      <Binding Path="B" /> 
     </MultiBinding> 
    </TextBlock.Text> 
</TextBlock> 

(1小数の桁の10進数のために、例えばF1)各多結合で結合するためのプレースホルダー({0}、{1} ...)を使用し、必要に応じて形式指定子を含みます形式文字列はエスケープシーケンスです(そうでない場合、XAMLパーサーは{をマークアップ拡張の先頭とみなします)。

+0

あなたの素早い対応のためにさて、あなたの答えで可能な場合、これを簡単に説明できますか? – ibrahimyilmaz

+0

@ibrahimyilmaz、申し訳ありませんが、私はコードが自明であると思いました...私は簡単な説明を追加しました。 –

6

2つのTextBlock/Labelsを使用して値を表示することができます。

あなたが.Net4を使用している場合は、誰もが、これは私がこれに来た方法です24時間時計のためである、「時刻書式」を探している場合は、TextBlockの

<TextBlock> 
    <Run Text="{Binding A, StringFormat={}{0:F1}}"/> 
    <Run Text="{Binding B, StringFormat={}{0:F1}}"/> 
</TextBlock> 
+0

2つの 'ラン'の間にはスペースがあります。これは 'StringFormat =" {} {0:F1} {1:F1} "のようなものではありません。 ''と書いても、(ReSharperのように)XAMLをフォーマットせずに、最後に ' [CRLF] [CRLF] ' – Marcel

4

の実行インライン要素にバインドすることができますポスト:

<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

を表示する
関連する問題