如何在 IValueConverter 中使用 targetType 参数?

Wil*_*ill 7 c# wpf xaml type-conversion ivalueconverter

我有一个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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

显然这不适用于每种情况,因为某些属性是 类型int

我知道该targetType参数可能是我需要在此转换器中使用的参数,但我没有找到有关如何正确使用它以将返回值相应地转换为所需值的示例。

有谁知道如何targetType在这种情况下使用参数?

Cle*_*ens 8

这应该可以在没有太多开销的情况下工作:

public object Convert(
    object value, Type targetType, object parameter, CultureInfo culture)
{
    double result = ... // your math

    return System.Convert.ChangeType(result, targetType);
}
Run Code Online (Sandbox Code Playgroud)