如何将 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。 那么你应该了解Binding
s 在 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 将数字格式化为印度货币(在数据表中)