문제

나는 최근에 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:

'Orders'유형에는 'Row. [id]'라는 속성이 없으므로 데이터 수집을 정렬 할 수 없습니다.

이상하게도, 나는 중첩 특성에 대한 결합에 문제가 없습니다. 실제로, 필드는 완벽하게 잘 표시됩니다 ListView... 또한 추가하지도 않습니다 PropertyGroupDescription 에게 listView.GroupDescriptions 중첩 된 속성에 문제가 있습니다. SortDescriptions!

이것은 wpf/the의 한계입니다 ListView 제어? 프레임 워크의 일부로 지원을받을 방법이 있습니까? 아니면 운이 좋지 않을까요? 불행히도,이 불일치가 피할 수 없다면, 누군가 중첩 된 속성 시나리오에 대한 해킹이나 해결 방법을 제안 할 수 있다면 감사하겠습니다. 나는 이미 몇 가지 아이디어를 시도했지만 최소한의 성공을 거두었습니다.

참고 : ORM이 내 문제를 잘 해결할 수 있다는 것을 알고 있지만, 이것이 현재 진행중인 현재 프로젝트에 대해 전혀 실현 가능하지는 않습니다. 간단한 ado.net 데이터 세트가해야합니다.

도움이 되었습니까?

해결책

Windows Presentation Foundation Leneded (Adam Nathan)에 따르면 기본보기를 ListCollectionView에 시전하고 Customsort 속성에 맞춤형 ICOMPARER 구현을 설정할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top