2011-10-31 116 views
0

我在我的xaml中有以下綁定,我可以看到顯示的double值,但StringFormat完全被忽略。StringFormat似乎沒有反應

<Label Content="{Binding ByteCount, StringFormat=n}"/> 

ByteCount屬性是double類型的。我甚至改變它甚至串起來,它仍然不起作用。

請問可能是什麼原因?

更新:

public double ByteCount 
{ 
      get 
      { 
       return CloneHelper.GetSize(this); 
      } 
} 

public static class CloneHelper 
    { 
     public static double GetSize(BookSetViewModel book) 
     { 
      ..... 

      return total; 
     } 
} 
+1

其中是綁定? –

+0

也許你可以在你的問題中包含實際的綁定? (順便說一句:一個ByteCount屬性表示爲double !?) –

+0

如果'ByteCount'是一個'int',則可能缺少一個轉換器。 –

回答

6

WPF的Label實際上有一個ContentStringFormat屬性,該屬性將覆蓋任何綁定的StringFormat

套裝ContentStringFormat代替

<Label Content="{Binding ByteCount}" ContentStringFormat="n" /> 
+0

你是一個明星雷切爾。驚人的發現,這是它!!! :)這是Silverlight的相同?我需要測試這個... – Houman

+0

@Kave我不確定它是否與Silverlight相同,但我會這麼認爲。應該很容易編寫一個快速測試並找出。 – Rachel

+0

真的很棒。 –

0

StringFormat酒店,你必須使用特殊的語法。

對於你的例子,你應該使用這個片段。

<Label Content="{Binding ByteCount, StringFormat={}{0:n}}" /> 

Here's一個鏈接到MSDN頁面的的StringFormat屬性。

+1

沒有,{}只是在那裏擺脫大括號。 「StringFormat = n」應該可以工作(並在此工作)。 –

+0

呵呵。謝謝 - 我不知道。 –

+0

我以爲你錯過了}在結束之前「。但它也不起作用。我不明白... – Houman

0

不知道是什麼原因,也許是因爲目標類型(標籤是對象),但它適用於TextBlock:

<TextBlock Text="{Binding ByteCount, StringFormat=n}"/>