我正在尝试编写一个字符串格式,它采用数百万范围内的货币数字,例如 275983.35,然后将其显示为 2.7。这是用作图例上的缩放数字。
我使用的控件需要这样的字符串格式{}{0:my string format}
我已经设法通过使用使显示器显示 2.7,{}{0:0,,.0}
但这不显示货币符号。如何在不硬编码单个货币符号的情况下显示货币符号,如下所示:{}{0;$0,,.0}
.
我正在尝试编写一个字符串格式,它采用数百万范围内的货币数字,例如 275983.35,然后将其显示为 2.7。这是用作图例上的缩放数字。
我使用的控件需要这样的字符串格式{}{0:my string format}
我已经设法通过使用使显示器显示 2.7,{}{0:0,,.0}
但这不显示货币符号。如何在不硬编码单个货币符号的情况下显示货币符号,如下所示:{}{0;$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}" />
这将输出:
270 万美元
显然,您需要调整转换器以获得所需的确切格式。