【发布时间】:2011-05-23 10:43:11
【问题描述】:
我必须使用转换器和参数将双精度转换为其他:
这是我的 XAML 存根:
Converter={StaticResource ToOtherDoubleConverter}, ConverterParameter=-1/2
这是转换器:
[ValueConversion(typeof(double), typeof(double))]
public class DoubleToOtherDoubleConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter,
CultureInfo culture)
{
return (double)value * double.Parse(parameter.ToString());
}
现在,说这取决于文化等等是没有用的。
有没有办法“硬编码”一个双精度数以被识别为双精度数? 因为上面的变体可以用不同的方式编写,例如:
ConverterParameter=-1/2
ConverterParameter=-0.5
ConverterParameter=-0,5
etc.
也可以
double.Parse(parameter.ToString());
(double)parameter;
等等……
还有一个问题:
如何以浮动格式指定1/3?像
ConverterParameter=0.333333333333333333333333333333333333333333333333333333
【问题讨论】:
-
您确定它是作为数值传入的吗?根据我的经验,大多数 XAML 值最终都会作为字符串传入,即使它们看起来像数字......
-
@Dan Puzey: 就像
object一样……最后可能是字符串,这就是我问的原因,因为不知道 :) -
如果您在转换器的第一行设置断点,您可以检查
value.GetType()并查看它传递的内容... -
@Dan:有理由:
parameter.GetType() {Name = "String" FullName = "System.String"} System.Type {System.RuntimeType}