2013-10-21 21 views
0

小數數量可變我創建了一個ValueConverter DoubleString之間,使我的文本框小數位的給定數。在雙爲String 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參數傳遞的整數,並用它作爲字符串格式化表達式的小數號碼是多少?」

+0

而你的問題是......? –

+1

爲什麼有一個轉換器呢?您可以使用[的StringFormat(http://msdn.microsoft.com/en-us/library/system.windows.data.bindingbase.stringformat.aspx)屬性。 – Clemens

+0

爲什麼你需要轉換器......你爲什麼不直接綁定指定的StringFormat? – Nitin

回答

1

您可以構建一個格式字符串與零所需數量:

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

這工作!我不知道你使用過的'String'構造函數。謝謝! – heltonbiker