访问 propertygrid 时,只有 ConvertTo 方法被调用(很多次)。这会正确返回“Foo!” 属性网格中的字符串。当我点击编辑时,我得到一个例外Cannot convert object of type Foo to type System.String.
(不完全是,翻译)。ConvertFrom 方法没有被调用,任何线索为什么?并且错误表明它正在尝试转换为字符串,而不是来自。
我想当我想编辑这个对象时,它必须从 Foo 转换为字符串,并在完成编辑后返回。
字符串转换器类:
public class FooTypeConverter : StringConverter {
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) {
return new Foo((string) value);
}
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) {
return "Foo!";
}
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) {
return true;
}
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) {
return true;
}
}
正在访问的属性:
Foo _foo = new Foo();
[Editor(typeof(System.ComponentModel.Design.MultilineStringEditor), typeof(UITypeEditor))]
[TypeConverter(typeof(FooTypeConverter))]
public Foo Foo {
get {
return _foo;
}
set {
_foo = value;
}
}