我有一个IValueConverter,我想用它来做简单的数学,它有以下Convert函数:
public object Convert(
object value,
Type targetType,
object parameter,
CultureInfo culture)
{
if (parameter == null)
{
return value;
}
switch (((string)parameter).ToCharArray()[0])
{
case '%':
return (double)value % double.Parse(
((string)parameter).TrimStart(new char[] {'%'}));
case '*':
return (double)value * double.Parse(
((string)parameter).TrimStart(new char[] {'*'}));
case '/':
return (double)value / double.Parse(
((string)parameter).TrimStart(new char[] {'/'}));
case '+':
return (double)value + double.Parse(
((string)parameter).TrimStart(new char[] {'+'}));
case '-':
if (((string)parameter).Length > 1)
{
return (double)value - double.Parse(
((string)parameter).TrimStart(new char[] {'-'}));
}
else
{
return (double)value * -1.0D;
}
default:
return DependencyProperty.UnsetValue;
}
}显然,这并不适用于每种情况,因为有些属性是int类型的。
我知道targetType参数很可能是我需要在这个转换器中使用的参数,但是我没有发现如何正确地使用它将返回值转换成相应的值的例子。
有人知道如何在这个上下文中使用targetType参数吗?
发布于 2016-02-19 19:34:50
这应该在不需要太多开销的情况下工作:
public object Convert(
object value, Type targetType, object parameter, CultureInfo culture)
{
double result = ... // your math
return System.Convert.ChangeType(result, targetType);
}发布于 2016-02-19 19:33:47
你可以做到的
var typeCode = Type.GetTypeCode(targetType); // Pass in your target type
if(typeCode == TypeCode.Int32)
{
// it is int type
}https://stackoverflow.com/questions/35512942
复制相似问题