Ссылаясь на мой другой question:DataGridComboBoxColumn Переплет конвертер не работает, как ожидалось
Я это DataGridComboBoxColumn:
<DataGridComboBoxColumn Header="Master" SelectedItemBinding="{Binding MasterId}" SelectedValueBinding="{Binding Id}" DisplayMemberPath="Id" ItemsSource="{Binding Data.Masters, Converter={converters:SimpleComboItemConverter}, Source={StaticResource proxy}}" />
Я создал этот IValueConverter для ошибки во время выполнения возникает при попытке сохранить значение к ряд.
[ValueConversion(typeof(string), typeof(SimpleComboItem<>))]
public class SimpleComboItemConverter : MarkupExtension, IValueConverter
{
public static SimpleComboItemConverter converter;
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
if (null == converter)
{
converter = new SimpleComboItemConverter();
}
return converter;
}
}
но при отладке внутри него метод Convert имеет IEnumerable объекты в стоимости и не string
и SimpleComboBoxItem<>
Класс SimpleComboBoxItem это действительно просто и ComboBox в колонке отображаются правильные значения:
public class SimpleComboItem<T>
{
public T Value { get; set; }
public string Text { get; set; }
}
Что я делаю неправильно?
'Data.Masters' является IEnumerable и передается аргументу' value'. Итак, каково ваше ожидание? – Clemens
Вы правы, я установил конвертер в неправильное место, в SelectedItemBinding будет работать так, как ожидалось? –