首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在targetType中使用IValueConverter参数?

如何在targetType中使用IValueConverter参数?
EN

Stack Overflow用户
提问于 2016-02-19 19:00:41
回答 2查看 2.9K关注 0票数 7

我有一个IValueConverter,我想用它来做简单的数学,它有以下Convert函数:

代码语言:javascript
复制
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参数吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-19 19:34:50

这应该在不需要太多开销的情况下工作:

代码语言:javascript
复制
public object Convert(
    object value, Type targetType, object parameter, CultureInfo culture)
{
    double result = ... // your math

    return System.Convert.ChangeType(result, targetType);
}
票数 8
EN

Stack Overflow用户

发布于 2016-02-19 19:33:47

你可以做到的

代码语言:javascript
复制
var typeCode  = Type.GetTypeCode(targetType); // Pass in your target type

if(typeCode  == TypeCode.Int32)
{
  // it is int type
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35512942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档