SortDescription привязано к явной реализации интерфейса - PullRequest
1 голос
/ 03 ноября 2010

У меня есть интерфейс

public interface IProperty
{
    string Name { get; }
}

и его явная реализация

public class Parameter : IProperty
{
    private readonly string m_name;

    public Parameter(string name) { m_name = name; }

    string IProperty.Name { get { return m_name; } }
}

У меня есть DataGrid , который показывает ObservableCollection . Единственный столбец, а именно DataGridTextColumn , сортирует строки по свойству SortMemberPath = "(this: IProperty.Name)" (я получил идею привязки к явным реализациям элементов из эта ветка форума ).

Итак, проблема в следующем: Как настроить сортировку строк по умолчанию ? Я пытался сделать это в конструкторе окна:

var sortDescription = new SortDescription("(this:IProperty.Name)", ListSortDirection.Ascending);
m_dataGrid.Items.SortDescriptions.Add(sortDescription);

с почти не повезло. Эффект:

  • Строки отсортированы в неуказанном порядке
  • Я получаю много ошибок в окне вывода Visual Studio:
    Ошибка System.Windows.Data: 39: Ошибка пути BindingExpression: свойство «(this: IProperty.Name)» не найдено для «объекта» «Параметр» (HashCode = 25584554) '. нуль
  • И самое интересное: когда я применяю любую фильтрацию (CollectionView.Filter) после просмотра коллекции - строки волшебным образом начинают правильно сортироваться!

Кто-нибудь имеет представление, почему строки не сортируются правильно с самого начала?
Если это имеет значение, я нацеливаюсь на .NET Framework v3.5

...