【发布时间】:2013-10-21 13:41:02
【问题描述】:
我在 Double 和 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 参数传递的整数用作字符串格式表达式中的小数位数?”
【问题讨论】:
-
你的问题是......?
-
为什么要有转换器?您可以改用StringFormat 属性。
-
为什么需要转换器...为什么不直接在绑定时指定StringFormat?
-
转换器是最必要的,因为我希望用户使用“。”输入小数位。或者 ”,”。
ConvertBack最终是必要的,所以我同时使用Convert和ConvertBack进行调整。
标签: c# wpf xaml string-formatting ivalueconverter