2010-09-30 12 views
22

Ces versions fonctionnent comme prévu:WPF: problèmes de StringFormat avec une étiquette

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

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

Lorsque je tente avec une étiquette, le StringFormat est iqnored et je reçois « 123,000000 » au lieu de « 123 ».

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

TotalUnits est un nombre décimal.

Alors, que se passe-t-il?

Répondre

47

Tout ce qui a une propriété Content possède une propriété spéciale ContentStringFormat que vous devez utiliser plutôt que de spécifier le StringFormat dans la liaison.

Comme ceci:

<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

C'était, je vous remercie. –

Questions connexes