2012-04-25 29 views
0

我正在尝试编写一个字符串格式,它需要数百万的范围内的货币数字,例如275983.35,然后将其显示为2.7。这是用作图例上的缩放数字。.Net字符串格式显示货币价值以百万为单位

我使用的控制要求的字符串格式,这样{}{0:my string format}

我设法让显示器使用{}{0:0,,.0}显示2.7但这并不显示货币符号。如何获取货币符号,以便在没有硬编码单个货币符号的情况下显示,如下所示:{}{0;$0,,.0}

+0

http://www.codeproject.com/Articles/11531/Money-DataType - 它其实是一个很好的数据类型,我已经有了很多成功! – 2012-04-25 10:51:12

回答

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米

显然,您需要调整转换器得到确切的你想要的格式。