2012-06-13 92 views
14

如您所知StringFormat對於WPF中的數據表示非常重要。我的問題是如何在WPF中的多重綁定時使用StringFormat?如何在WPF中的多重綁定中使用stringformat XAML

如果我舉一個很簡單的例子:

我們有變數,這是A和B,並10.255555和25.6999999

我們想向他們展示10.2,25.6其值?

我怎樣才能做到這一點與multibinding?通常它是ValueConverter小菜一碟

關於這個主題的幫助和想法將greately讚賞

回答

48

剛剛成立的MultiBindingStringFormat財產;使用佔位符({0},{1} ...)在multibinding對於每種結合的,並且包括格式說明如果必要的話(例如,F1與1個十進制數字的十進制數)

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

{}部分開始是格式字符串是轉義序列(否則XAML分析器會認爲{是標記擴展的開始)

+0

那麼,thx爲你的快速反應,但你可以在你的答案可能嗎? – ibrahimyilmaz

+0

@ibrahimyilmaz,對不起,我認爲代碼是自我解釋的...我添加了一個簡短的解釋。 –

6

爲了簡化您可以使用兩個TextBlock/Labels來顯示值。

如果您正在使用.NET4,你可以在一個TextBlock

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

2'Run's之間將是一個空格。這不像上面提到的'StringFormat =「{} {0:F1} {1:F1}」。即使寫''只會在你不會格式化XAML(像ReSharper那樣)並最終成爲' [CRLF] [CRLF] ' – Marcel

4

如果有人正在尋找「時間格式」這是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

相關問題