Я хотел бы написать IMultiValueConverter, который преобразует обратное значение (строку) в массив с объектами, совместимыми с типами, указанными в параметре targetTypes, например:
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
if (value != null)
{
List<object> results = new List<object>();
string[] arr = value.ToString().Split(' ');
for (int i = 0; i < arr.Length; i++)
{
object item = (targetTypes[i])arr[i]; //ERROR: Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement
}
return results.ToArray();
}
else
{
return null;
}
}
Так, например, "Лондон 22" я хотел бы преобразовать обратно в "Лондон" (строка) и "2" (int). Как указано в списке типов в параметре targetTypes. И, конечно, вернуть его в виде массива.
Однако я не могу привести элементы этого массива к ожидаемому параметру targetTypes, как я прокомментировал в приведенном выше коде.
Цель, конечно, состоит в том, чтобы решить проблему, сообщенную во время привязки: «Не удается сохранить значение из цели обратно в источник.», Которая возникает, когда делается попытка сохранить строку в int.
Что сообщается, когда я использую такой преобразователь:
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
if (value != null)
{
return value.ToString().Split(' ');
}
else
{
return null;
}
}