У меня есть интерфейс
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