如何将 UI 控件的双数据值格式化为数字,例如 1234 到 1.23K? [复制]

Posted

技术标签:

【中文标题】如何将 UI 控件的双数据值格式化为数字,例如 1234 到 1.23K? [复制]【英文标题】:How could I format a UI control's double data value to numberic ,eg 1234 to 1.23K? [duplicate] 【发布时间】:2019-01-29 06:13:05 【问题描述】:

如何让 TextBlock 等 wpf UI 控件以数字格式显示双精度值,例如:

-如果double值为12345,则显示为12.3K或12,3K。

-如果double值为123,则显示0,12K或0.12K。

我试过StringFormat=0:#,K,这个不支持小数点后2位。

WPF TextBlock 双值格式。

Binding="Binding Volume, StringFormat=0:#,K"

预期:

-12.3K 为 12345;

-0.12K 为 123;

ps:我尝试过 IValueConverter 解决方案。我的数据显示在数据网格控件中。通过使用 IValueConverter。复制到剪贴板后,我会得到“12.3K”不正确的数据“12345”。

我想我需要一种字符串格式的方式。

【问题讨论】:

嗨LittleBit,我已经看了很多anwsers,但是如何让它在WPF UI控件上工作?例如,TextBlock。 那么你应该了解Bindings 在 WPF 中是如何工作的。网络上有大量的教程(例如wpf-tutorial.com/data-binding/introduction) 将重复问题答案中的代码放入绑定转换器。 嗨 Clemens,我知道 IValueConverter 解决方案。我的数据显示在 datagrid 控件中。通过使用 IValueConverter,将字符串“1.23K”复制到剪贴板后,我将得到不正确的数据“12345”。 【参考方案1】:

您可以在使用绑定时使用转换器。创建转换器类:

    public class DoubleFormatter : IValueConverter

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    
        string formatedDouble = "";
        formatedDouble = System.Convert.ToString(System.Convert.ToDouble(value) / 1000).Substring(0,4) + "K";
        return formatedDouble;
    


    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    
        throw new NotImplementedException();
    


创建静态资源:

    <local:DoubleFormatter  x:Key="DoubletoKFormat"/>

并像这样使用它:

    <TextBlock Text="Binding Header, Converter= StaticResource DoubletoKFormat "/>

【讨论】:

是的,我知道。我的数据显示在数据网格中,如果我使用 IValueConverter,我将在复制到剪贴板后得到字符串“1.23K”而不是原始数据“12345”。

以上是关于如何将 UI 控件的双数据值格式化为数字,例如 1234 到 1.23K? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 javascript/jquery 将数字格式化为印度货币(在数据表中)

将文本格式化为数字的 SQLplus 脚本

如何仅使用货币代码将数字格式化为货币?

如何使用 PHPExcel 将百分比数字格式化为 Excel 百分比?

如何将数字格式化为固定的语言环境?

将数字数组格式化为具有最小宽度的货币