C# 如何在IValueConverter中使用targetType参数?
我有一个C# 如何在IValueConverter中使用targetType参数?,c#,wpf,xaml,type-conversion,ivalueconverter,C#,Wpf,Xaml,Type Conversion,Ivalueconverter,我有一个IValueConverter,我想用它来做简单的数学运算,它有以下Convert功能: public object Convert( object value, Type targetType, object parameter, CultureInfo culture) { if (parameter == null) { return value;
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
参数吗?您可以这样做
var typeCode = Type.GetTypeCode(targetType); // Pass in your target type
if(typeCode == TypeCode.Int32)
{
// it is int type
}
这应该可以在没有太多开销的情况下工作:
public object Convert(
object value, Type targetType, object parameter, CultureInfo culture)
{
double result = ... // your math
return System.Convert.ChangeType(result, targetType);
}