1

文字列として入ってくる値があり、型に変換する必要があります。現在、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);
}
4

1 に答える 1

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

次に、型コンバーターが存在する場合はそれを使用します。

于 2012-05-25T19:39:14.767 に答える