如果小数是整数,我想显示十进制值而不尾随零,即如果值为10000000.00,那么我使用stringFormat =“0,0。####”将值显示为10,000,000。 如果小数值是10000000.57那么它将显示10,000,000.57,这很好。现在问题是如果值是10000000.50然后它显示为10,000,000.5,这是不正确的,因为stringFormat =“0,0。####”。我正在使用的stringFormat在app.config文件中提到,如下所示
<add source="currency1Amount" headerText="Currency 1 Amount" filterType="textFilter" rowType="textRow" hasSpecifiedSource="" stringFormat="0,0.####" alignment="right"/>
<add source="currency2Amount" headerText="Currency 2 Amount" filterType="textFilter" rowType="textRow" hasSpecifiedSource="" stringFormat="0,0.####" alignment="right"/>
除此之外,还有很多列在运行时显示(值)意味着数据网格和服务器值的映射是动态生成的。所以我对上面两列中显示的值没有多少控制权。
是否可以定义stringFormat以满足我的上述要求并解决问题,即如果值为10000000.50则应显示10,000,000.50而不是10,000,000.5
请帮忙吗?
答案 0 :(得分:1)
我认为你可以提供IValueConverter
public class SpecialFormatting : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
double number = (double)value;
if(number % 1 == 0)
return string.Format("{0:N0}",number);
return string.Format("{0:N2}",number);
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
}
}
在WPF中
<DataGrid>
<DataGrid.Resources>
<SpecialFormatting x:Key="SpecialFormattingConverter"/>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=MyNumber,
Converter={StaticResource SpecialFormattingConverter}}"/>
</DataGrid.Columns>
</DataGrid>