2010-09-30 13 views
22

Estas versiones funcionan como se esperaba:WPF: problemas StringFormat con una etiqueta

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

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

Cuando trato con una etiqueta, el StringFormat se iqnored y consigo "123.000000" en lugar de "123".

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

TotalUnits es un decimal.

Entonces, ¿qué está pasando?

Respuesta

47

Cualquier cosa con una propiedad Content tiene una propiedad especial ContentStringFormat que debe usar en lugar de especificar el StringFormat en el Enlace.

De esta manera:

<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

Eso fue todo, gracias. –

Cuestiones relacionadas