文句を言わない作業を列挙します色。C#のキャストオブジェクトは、私は、このXAMLを持って
[ValueConversion(typeof(LogEintragTyp), typeof(Color))]
public class LogTypToColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (!(value.GetType() == typeof(LogEintragTyp)))
throw new Exception("Wrong type!");
LogEintragTyp sv = (LogEintragTyp)value;
このテンプレートにバインドされているオブジェクトは、常に「LogEintragTyp」値です。ただし、常に例外がスローされます。
だから、 "値" は "標準" を含んで言う:私は、Visual Studioでこれをデバッグするとき
それは "値が" これですと言います。 しかし、私はマウスオーバー正しくキャスト値上のデバッガから見たときに、それは(一番下)これを言う:
私が探しています値である「デバッグ」...しかしときデバッガをその行に移動して、実際にプログラムが変換を実行できるようにすると、無効なキャスト例外が発生します。どうして "値"オブジェクトに "LogEintragTyp"という文字列がありませんが、実際に探している値の名前である文字列 "Typ"とデバッガも見ていますが、実行中のプログラムはisntですか?
あなたが列挙型に文字列をキャストボックスすることはできませんEnumを使用する必要があります。TryParse –
'value'は' string'のようです。 'sv'は、キャストによって設定される前のデフォルト値をデバッガで表示しています。 – juharr
'{Binding Source = Typ、...}'と書くと、バインディングのソースオブジェクトは文字列 '' Typ "'になります。おそらく、パブリック 'Typ'プロパティを持つオブジェクトにバインドし、' {Binding Path = Typ、...} 'や' {Binding Typ、...} 'のようにBindingを書くことをお勧めします。 – Clemens