根据代码隐藏中的类型动态选择内置转换器

时间:2012-05-25 18:04:37

标签: wpf converter code-behind

我有一个以字符串形式出现的值,我需要转换为一个类型。 现在,XAML使用内置的转换器来执行此操作。

有没有办法确定哪种类型的转换器仅用于目标属性的类型?

我尝试使用类型转换器,但当然它无法从字符串转换为边距,因为知道它需要使用标记扩展并不复杂。

到目前为止

代码:

ResourceKey key = null;
if ((key = (value as ResourceKey)) != null)
{
   var descriptor = DependencyPropertyDescriptor.FromName(_PD.Name, _TargetEditor.TargetObject.GetType(), _TargetEditor.TargetObject.GetType());
                    ((FrameworkElement)_TargetEditor.TargetObject).SetResourceReference(descriptor.DependencyProperty, key);
   return;
}

if ((value is String) && (_PD.PropertyType != typeof(String)))
{
   this._PD.SetValue(_TargetEditor.TargetObject, Convert.ChangeType(value, _PD.PropertyType));
}
else
{
   this._PD.SetValue(_TargetEditor.TargetObject, value);
}

1 个答案:

答案 0 :(得分:1)

从类型转换器属性中获取类型转换器。

AttributeCollection attributes = TypeDescriptor.GetAttributes(_PD.PropertyType);
TypeConverterAttribute converterAttribute = (TypeConverterAttribute)attributes[typeof(TypeConverterAttribute)];
if (converterAttribute != null)
{
   Type converterType = Type.GetType(converterAttribute.ConverterTypeName);
   {
      _TypeConverter = (TypeConverter)Activator.CreateInstance(converterType);
   }
}

然后使用类型转换器(如果存在)。