在WPF/xaml代码中,我可以使用以下方法显示一定数量的钱:
<TextBlock Text="{Binding ., StringFormat={}{0:C}}" xml:lang="fr-FR"/>
例如,它将显示:
680 000,00 €
我正在尝试从 xaml 代码中删除不需要的小数,例如,
680 000 €
或
680 千€
我该怎么做?
如果你想要680 000欧元,你可以试试:StringFormat={}{0:C0}}
对于680 k€,对于您想要的所有格式,转换器都可以完成这项工作。
根据你的逻辑,你需要这样的东西
public class CurrencyConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is int intValue)
{
if (intValue < 1000)
{
return string.Format(culture, "{0:C0}", intValue);
}
return $"{intValue / 1000} k{culture.NumberFormat.CurrencySymbol}";
}
return value?.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return Binding.DoNothing;
}
}
当然,您可以使其更通用并解析数百万等以及不同的值类型。这里重要的一点是将fr-FR
文化传递到转换器中以获得正确的货币符号
Xaml 声明
<Window.Resources>
<yournamespace:CurrencyConverter x:Key="currencyConverter"/>
</Window.Resources>
Xaml 用法
<TextBlock Text="{Binding ., Converter={StaticResource currencyConverter}, ConverterCulture=fr-FR}"/>