Double to String ValueConverter中的可变小数位数

时间:2013-10-21 13:41:02

标签: c# wpf xaml string-formatting ivalueconverter

我在DoubleString之间创建了一个ValueConverter,以便我的文本框具有给定的小数位数。

但是,我需要能够将一个整数作为参数传递给ValueConverter方法,这样我就可以在任何给定的文本框上使用不同的小数位数,并使用相同的转换器。

我的转换器代码在这里:

[ValueConversion(typeof(Double), typeof(String))]
public class DoubleToStringPontoVirgula : IValueConverter {

    // Converte um double em uma string separada por vírgula com tantas casas depois da vírgula
    public object Convert(object value,
                          Type targetType,
                          object parameter, // I would like to use this!!
                          System.Globalization.CultureInfo culture) {

        string resultado = string.Format("{0:0.0}", // Shouldn't be a hardcoded format!
                                           value);
        return resultado;

    }

    // Converte uma string separada por ponto OU vírgula em um double
    public object ConvertBack(object value,
                              Type targetType,
                              object parameter,
                              System.Globalization.CultureInfo culture) {

        string entrada = value as string;

        double resultado = System.Convert.ToDouble(entrada.Replace('.', ','));

        return resultado;

    }

}

在XAML中,我想传递这样的参数(以“2”为例):

<TextBox Text="{Binding Peso, Converter={StaticResource DoubleToStringPontoVirgula}, ConverterParameter=2}"/>

问题是:“如何将整数作为parametar参数传递,并将其用作字符串格式表达式中的小数位数?”

1 个答案:

答案 0 :(得分:1)

您可以使用所需的零数构建格式字符串:

string.Format(culture, "{0:0." + new string('0', Convert.ToInt32(parameter)) + "}"