These versions work as expected:
<DataGridTextColumn Header="Total Units" Binding="{Binding TotalUnits, Mode=OneWay, StringFormat=N0}"/> <TextBlock Text="{Binding TotalUnits, Mode=OneWay, StringFormat=N0}"/>
When I try it with a label, the StringFormat is iqnored and I get "123.000000" instead of "123".
<Label Content="{Binding TotalUnits, Mode=OneWay, StringFormat=N0}"/>
TotalUnits is a Decimal.
So, what's going on?
Anything with a Content
property has a special ContentStringFormat
property you have to use rather than specifying the StringFormat in the Binding.
Like this:
<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>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With