Silverlight: сортировка столбца, связанного с IValueConverter? - PullRequest
0 голосов
/ 16 декабря 2011

У меня есть сетка данных silverlight, и я динамически добавляю столбцы в нее программно.

Один из столбцов связан со сложным свойством, которое представляет собой список бизнес-объектов. Чтобы отобразить правильное свойство для нужного объекта в списке, я использую пользовательский преобразователь значений, передавая List и имя объекта в качестве необязательного параметра.

Затем я прокручиваю список и нахожу нужный объект в списке, чтобы связать его со свойством значения.

Это отлично работает для отображения, но, похоже, отключает или портит, запрещает сортировку столбца.

Я знаю, что это связано конкретно с конвертером, потому что любой другой динамический столбец, который я добавляю, со стандартным связыванием свойств, сортируется нормально.

Вот код моего 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);
...