这些版本按预期工作:

<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是一个十进制。

发生什么了?

最佳答案

具有Content属性的任何东西都必须使用特殊的ContentStringFormat属性,而不是在绑定(bind)中指定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>

关于wpf - WPF:标签的StringFormat问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3826761/

10-12 15:53