Silverlight:对与IValueConverter绑定的列进行排序?

时间:2011-12-16 17:52:53

标签: silverlight data-binding ivalueconverter

我有一个silverlight数据网格,并以编程方式动态添加列。

其中一列绑定到一个复杂属性,该属性是业务对象列表。 为了在列表中的右侧对象上显示正确的属性,我正在使用自定义值转换器,将List和对象的名称作为可选参数传递。

然后我在列表中旋转,并在列表中找到正确的对象以绑定到其value属性。

这非常适用于显示目的,但它似乎禁用或混淆禁止对列进行排序。

我知道它必须专门用于转换器,因为我添加的任何其他动态列,使用标准属性绑定,它排序很好。

以下是我的IValueConverter的代码:

public class MetaDataValueConverter : IValueConverter
{
    public MetaDataValueConverter()
    {
    }

    public virtual object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        string result = string.Empty;
        List<XFerMetadata> md = (List<XFerMetadata>)value;
        foreach(XFerMetadata val in md)
        {
            if (val.Name.Match(parameter.ToString()))
            {
                result = val.Value;
                break;
            }
        }
        return result;
    }

    public virtual object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return value;
    }
}

以下是我动态创建列并设置绑定的代码。

 DataGridTextColumn col = new DataGridTextColumn();
 col.Header = schema.FieldName;
 Binding binding = new Binding("MetaData");
 binding.Converter = new MetaDataValueConverter();
 binding.ConverterParameter = schema.FieldName;
 col.Binding = binding;
 cols.Add(col);

0 个答案:

没有答案