次のクラスがあるとします。
public class Values {
public string Value1 {get;set;}
public string Value2 {get;set;}
public string Value3 {get;set;}
}
次に、IValueConverter を使用して、このオブジェクトの値を特定の順序で GUI コンポーネントの ItemsSource にバインドします。
public class ValuesToListConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var valuesObj = (Values ) value;
yield return valuesObj.Value1;
yield return valuesObj.Value3;
yield return valuesObj.Value2;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
しかし、これを行うと、次のエラーが発生します。
'オブジェクト' は反復子インターフェイス型ではないため、'Convert' の本体を反復子ブロックにすることはできません。
IValueConverter でこのリストを遅延作成する方法はありますか? または、私はしなければなりませんか:
return new List<string> { valuesObj.Value1, valuesObj.Value3, valuesObj.Value2 }