DatagridComboBoxColumn

DatagridComboBoxColumn

引用我的其他question:

我有这个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对象,而不是stringSimpleComboBoxItem<>
SimpleComboBoxItem类非常简单,列中的ComboBox显示正确的值:
public class SimpleComboItem<T>
{
    public T Value { get; set; }
    public string Text { get; set; }
}

我究竟做错了什么?

最佳答案

问题出在xaml中,您正在将ID映射为Item。您必须使用SelectedValueBinding而不是SelectedItemBinding。

关于c# - DataGridComboBoxColumn绑定(bind)转换器无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37829817/

10-10 12:42