【问题标题】:XAML TextBlock XML: StringFormat to display numberXAML TextBlock XML:StringFormat 以显示数字
【发布时间】:2011-10-12 20:42:13
【问题描述】:

我的 XML 数据是:

<Num>12.6</Num>

我将它绑定到 XAML TextBlock 并希望将值显示为不带小数点的舍入数字。所以这个值应该显示为 13。同理,12.2 应该显示为 12,以此类推。

我需要下面的 StringFormat 中的代码(在...处)来做我想做的事:

<TextBlock Text= "{Binding Num, StringFormat=...}" />

谢谢。

【问题讨论】:

    标签: xml xaml string-formatting textblock


    【解决方案1】:

    尝试使用转换器:

    public class StringToDoubleConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return double.Parse(value as string);
        }
    
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
    

    然后在xaml中,声明转换器:

    <UserControl.Resources>
        <local:StringToDoubleConverter x:Key="StringToDoubleConverter"/>
    </UserControl.Resources>
    

    最后在绑定中使用它,与StringFormat一起使用:

    <TextBlock Text= "{Binding Num, StringFormat=n0, Converter={StaticResource StringToDoubleConverter}}" />
    

    n0 中的零表示没有小数位 (Standard Numeric Format Strings)

    【讨论】:

    • 它仍然精确地显示带有小数点且不四舍五入的字符串。我必须进行任何类型的转换吗?我怀疑该值当前被视为字符串。我可能需要以某种方式指定它是一个数字。谢谢。
    • 这很奇怪。它对我来说完美无缺地成为 Num 的两倍。尝试使用 n2 而不是 n0 来查看它是否显示 2 个小数位。还有,Num 的类型是什么?
    • 除了显示在 TextBlock 中之外,我没有指定 Num 的类型。这是否意味着它是字符串类型的?这就是我想知道转换的原因。
    • 你不需要指定类型。绑定会自动检测到它。这只有在 Num 是双精度、小数或浮点数时才有效。
    • 那么我如何以及在哪里指定 Num 是双精度数、十进制数还是浮点数?谢谢。
    猜你喜欢
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 2016-09-24
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多