XAML解析器错误:“MyType”的TypeConverter不支持从字符串转换

时间:2015-03-11 22:03:42

标签: c# xaml silverlight-5.0

但确实如此。我创建了一个实现CanConvertFrom()的类型转换器,在类型类型上定义了类型转换器。一切都运行良好。这只是为Blend定义设计时间数据的XAML,但错误非常烦人。

似乎VS并没有尝试使用类型转换器。是否有一些地方需要注册类型转换器,以便Visual Studio在设计时使用它们?

[TypeConverter(typeof(MyTypeTypeConverter))]
[DataContract]
public struct MyType
{
    [DataMember]
    internal readonly float _Value;

    public MyType(float value)
    {
        _Value = (float)Math.Round(value, 3);
    }
}

public class MyTypeTypeConverter : TypeConverter
{
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
    {
        if (sourceType == typeof(String))
            return true;
        return base.CanConvertFrom(context, sourceType);
    }

    public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
    {
        if (value is string)
        {
            float f;
            if (!Single.TryParse((string)value, out f))
                return null;
            return new MyType(f);
        }
        return base.ConvertFrom(context, culture, value);
    }

    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
    {
        if (destinationType == typeof(string))
            return true;
        return base.CanConvertTo(context, destinationType);
    }

    public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
    {
        if (destinationType == typeof(string))
        {
            return ((MyType)value).ToString();
        }
        return base.ConvertTo(context, culture, value, destinationType);
    }
}

0 个答案:

没有答案