IValueConverterを指定せずに文字列ターゲットをソースタイプに変換する方法をWPFに伝える方法があると仮定します。 WPFは文字列を色に変換します。私のタイプが文字列から私のタイプへの明示的な変換をサポートしていれば、これで十分だろうと思いました。しかし、これはうまくいかなかった。方法はありますか?IValueConverterを使わずにターゲットをソースタイプに変換する方法を教えてください
答えて
はい、あなたのタイプにタイプコンバータを定義する必要があります。 ToString()をオーバーライドするだけで、型から文字列に変換できます。他の方向に進むにはタイプコンバータが必要です。たとえば...
public class PartNumberConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
return sourceType == typeof(string);
}
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
if(value is string)
{
return new PartNumber(value as string);
}
return null;
}
}
[TypeConverter(typeof(PartNumberConverter))]
public class PartNumber
{
public PartNumber(string s)
{
string[] e = s.Split('-');
if(e.Length==3)
{
_a = Convert.ToInt32(e[0]);
_b = Convert.ToInt32(e[1]);
_c = Convert.ToInt32(e[2]);
}
}
public PartNumber(int a, int b, int c)
{
_a = a;
_b = b;
_c = c;
}
int _a = 0;
int _b = 0;
int _c = 0;
public override string ToString()
{
return _a + "-" + _b + "-" + _c;
}
}
はそうではないIValueConverterそれでもコンバータ:)
注:OPのためです。 'IValueConverter'はランタイムツールです。ここに挙げた 'TypeConverter'はデザインタイムツールです。あなたのオブジェクトに直接バインドする場合、 'IValueConverter'が正しいツールかもしれません。 XAMLで型のインスタンスを作成する場合は、 'TypeConverter'が正しいツールです。 –
ありがとうございます。 IValueConverterを作成せずに、XAMLプログラマーが自分の型指定を使用したかったのです。これは完全に機能します。ありがとうございました。 – user3905162
あなたは[にTypeConverter](https://msdn.microsoft.com/en-us/library/systemを登録することができ.componentmodel.typeconverter(v = vs.110).aspx)。 – Clemens