C# XAML语法分析器错误:“的类型转换器”;MyType“;不支持从字符串转换

C# XAML语法分析器错误:“的类型转换器”;MyType“;不支持从字符串转换,c#,xaml,silverlight-5.0,C#,Xaml,Silverlight 5.0,但确实如此。我创建了一个实现CanConvertFrom()的类型转换器,在type上定义了类型转换器。一切正常。这只是为Blend定义设计时数据的XAML,但错误非常恼人 看起来VS只是没有尝试使用类型转换器。是否有一些地方需要注册类型转换器,以便VisualStudio在设计时使用它们 [TypeConverter(typeof(MyTypeTypeConverter))] [DataContract] public struct MyType { [DataMember]

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

看起来VS只是没有尝试使用类型转换器。是否有一些地方需要注册类型转换器,以便VisualStudio在设计时使用它们

[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);
    }
}