Вопрос

Я недавно наткнулся на проблему, где WPF ListView Контроль, кажется, ограничивает способность сортировать свои элементы. В частности, у меня много проблем, пытаясь получить SortDescription Признать вложенные свойства (свойства свойств).

Для прямой сортировки по пропрее, следующая строка должна выполнять задание:

listView.Items.SortDescriptions.Add(new SortDescription("MyProperty",
    ListSortDirection.Ascending));

И действительно, это хорошо работает для меня. Однако, потому что ItemSource для моего ListView это (сильно типичный) DataTable, некоторые из столбцов связаны с вложенными свойствами ряда (т.е. Row.OtherTableRow.SubProperty Стиль пути привязки) - Это способ, которым наборы данных ADO.NET работают для иерархических баз данных.

Я хотел бы сделать что -то вроде этого:

listView.Items.SortDescriptions.Add(new SortDescription("MyProperty.SubProperty",
    ListSortDirection.Ascending));

Но, к сожалению, эта линия бросает ArgumentException:

Тип «Заказ» не имеет свойства с именем «row. [Id]», поэтому не может сортировать сбор данных.

Как ни странно, у меня нет проблем, связанных с вложенными свойствами. Действительно, поля отлично хорошо отображаются в ListView... не добавление PropertyGroupDescription к listView.GroupDescriptions Дайте мне проблемы с вложенными свойствами - это только SortDescriptions!

Это, но ограничение WPF/ ListView контроль? Есть ли способ получить поддержку в рамках рамки, или мне там не повезет? Если бы я, к сожалению, и это несоответствие неизбежно, я бы очень признателен, если бы кто -то мог предложить взлом или обходной путь для этого сценария вложенных свойств. Я уже пробовал несколько идей, но все с минимальным успехом.

Примечание: я понимаю, что ORM вполне может решить мои проблемы, но я боюсь, что это совсем не возможно для текущего проекта, над которым я работаю. Простые наборы данных ADO.NET должны будут делать.

Это было полезно?

Решение

Согласно Windows Presentation Foundation Unlident (Adam Nathan), вы можете представить представление по умолчанию в ListCollectionView и установить пользовательскую реализацию IcomParer в свой свойство таможни.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top