.Net字符串格式以百万为单位显示货币值

时间:2012-04-25 10:28:25

标签: .net silverlight string-formatting

我正在尝试编写一个字符串格式,其中包含数百万的货币数字,例如275983.35,然后将其显示为2.7。这用作图例上的缩放数字。

我使用的控件需要像{}{0:my string format}

这样的字符串格式

我已设法通过使用{}{0:0,,.0}让显示器显示2.7,但这不会显示货币符号。如何在不对单一货币符号进行硬编码的情况下显示货币符号,如下所示:{}{0;$0,,.0}

1 个答案:

答案 0 :(得分:0)

最简单的解决方案是将数字除以1,000,000,然后使用标准货币格式显示。这将为您提供货币的本地化 - 但,并表明这是数百万美元/英镑/欧元。

更好的解决方案是编写一个自定义转换器,将按百万选择正确的货币符号进行除法,然后附加“m”(或您决定的任何符号)以表明这是数百万。

public class MillionsConverter : IValueConverter
{
    #region IValueConverter Members

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return (value / 1000000M).ToString("C2") + " m";
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }

    #endregion
}

然后在XAML中:

<ResourceDictionary>
    <Converters:MillionsConverter  x:Key="MillionsConverter " />
</ResourceDictionary>

<TextBlock Text="{Binding Value, Converter={StaticResource MillionsConverter}" />

这将输出:

  

$2.7米

显然,您需要调整转换器以获得所需的确切格式。