XAML TextBlock XML:StringFormat显示数字

XAML TextBlock XML:StringFormat显示数字,xml,xaml,string-formatting,textblock,Xml,Xaml,String Formatting,Textblock,我的XML数据是: <Num>12.6</Num> 12.6 我将其绑定到XAML文本块,并希望将值显示为不带小数点的四舍五入数字。所以这个值应该显示为13。同样,12.2应显示为12,以此类推 我需要以下字符串格式的代码(在…)来执行我想要的操作: <TextBlock Text= "{Binding Num, StringFormat=...}" /> 谢谢。尝试使用转换器: public class StringToDoubleConverte

我的XML数据是:

<Num>12.6</Num>
12.6
我将其绑定到XAML文本块,并希望将值显示为不带小数点的四舍五入数字。所以这个值应该显示为13。同样,12.2应显示为12,以此类推

我需要以下字符串格式的代码(在…)来执行我想要的操作:

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

谢谢。

尝试使用转换器:

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();
    }
}
<UserControl.Resources>
    <local:StringToDoubleConverter x:Key="StringToDoubleConverter"/>
</UserControl.Resources>
然后在xaml中声明转换器:

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();
    }
}
<UserControl.Resources>
    <local:StringToDoubleConverter x:Key="StringToDoubleConverter"/>
</UserControl.Resources>

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

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

n0中的零表示没有小数位数()

尝试使用转换器:

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();
    }
}
<UserControl.Resources>
    <local:StringToDoubleConverter x:Key="StringToDoubleConverter"/>
</UserControl.Resources>
然后在xaml中声明转换器:

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();
    }
}
<UserControl.Resources>
    <local:StringToDoubleConverter x:Key="StringToDoubleConverter"/>
</UserControl.Resources>

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

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


n0
中的零表示没有小数点()

它仍然精确显示带小数点的字符串,并且没有舍入。我必须做任何形式的转换吗?我怀疑该值当前被视为字符串。我可能需要指定它是一个数字。谢谢,真奇怪。作为一名替身,这对我来说完美无瑕。尝试使用n2而不是n0来查看它是否显示2位小数。另外,Num的类型是什么?我没有指定Num的类型,只是它显示在文本块中。这是否意味着它是字符串类型?这就是为什么我想知道转换的原因。您不需要指定类型。它由绑定自动检测。这只在Num是double、decimal或float时才起作用。那么如何以及在何处指定Num是double、decimal或float呢?谢谢。它仍然精确地显示带小数点且不舍入的字符串。我必须做任何形式的转换吗?我怀疑该值当前被视为字符串。我可能需要指定它是一个数字。谢谢,真奇怪。作为一名替身,这对我来说完美无瑕。尝试使用n2而不是n0来查看它是否显示2位小数。另外,Num的类型是什么?我没有指定Num的类型,只是它显示在文本块中。这是否意味着它是字符串类型?这就是为什么我想知道转换的原因。您不需要指定类型。它由绑定自动检测。这只在Num是double、decimal或float时才起作用。那么如何以及在何处指定Num是double、decimal或float呢?谢谢