2010-09-30 113 views
22

這些版本按預期工作:WPF:問題的StringFormat用標籤

<DataGridTextColumn Header="Total Units" Binding="{Binding TotalUnits, Mode=OneWay, StringFormat=N0}"/> 

<TextBlock Text="{Binding TotalUnits, Mode=OneWay, StringFormat=N0}"/> 

當我與一個標籤嘗試吧,是的StringFormat和iqnored我得到的「123.000000」,而不是「123」。

<Label Content="{Binding TotalUnits, Mode=OneWay, StringFormat=N0}"/> 

TotalUnits是一個十進制數。

那麼,這是怎麼回事?

回答

47

任何與Content屬性都有一個特殊的ContentStringFormat屬性,您必須使用而不是在綁定中指定StringFormat。

像這樣:

<Window.Resources xmlns:sys="clr-namespace:System;assembly=mscorlib"> 
    <sys:Int16 x:Key="MyValue">100</sys:Int16> 
</Window.Resources> 

<StackPanel DataContext="{StaticResource MyValue}"> 

    <!-- using Label --> 
    <Label Content="{Binding}" ContentStringFormat="{}{0:C}" /> 

    <!-- using TextBlock--> 
    <TextBlock Text="{Binding, StringFormat={0:C}}" /> 

</StackPanel> 
+0

就是這樣,謝謝。 – 2010-09-30 02:36:15