2009-07-23 8 views
1

최근에 WPF ListView 컨트롤이 해당 항목을 정렬하는 기능을 제한하는 것으로 보이는 문제를 발견했습니다. 특히 SortDescription에 중첩 된 속성 (속성 속성)을 인식시키려는 데 많은 어려움을 겪고 있습니다.WPF ListView - 중첩 된 속성으로 정렬

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

을 그리고 실제로 나를 위해 잘 작동합니다 :

propreties에 의해 솔직 분류를 들어, 다음 줄은 작업을 수행해야합니다. 그러나 ListView에 대한 ItemSource은 (강하게 입력 된) DataTable이므로 일부 열은 행의 중첩 된 속성에 바인딩됩니다 (즉, Row.OtherTableRow.SubProperty 바인딩 경로 스타일). ADO.NET DataSet이 계층 적 데이터베이스에서 작동하는 방식입니다. 내가하고 싶은 무엇

이 같은 것입니다 :

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

그러나 불행하게도 그 라인은 ArgumentException 발생시킵니다.

행 '라는 이름의 속성이 없습니다'주문 '유형 [ID를 ] ', 그래서 데이터 수집을 정렬 할 수 없습니다.

이상하게도 중첩 된 속성에 바인딩하는 데 문제가 없습니다. 실제로, 필드는 ListView에서 완벽하게 잘 표시됩니다 ... PropertyGroupDescriptionlistView.GroupDescriptions에 추가해도 중첩 된 속성에 문제가 발생하지 않습니다. 이는 단지 SortDescriptions입니다!

WPF/ListView 컨트롤의 제한 사항이 아닙니까? 프레임 워크의 일부로 지원을받을 수있는 방법이 있습니까? 아니면 내가 운이 좋지 않을까요? 불행하게도이 불일치가 불가피한 경우 중첩 된 속성의 시나리오에 대한 해킹 또는 해결 방법을 제안 할 수 있다면 크게 감사하겠습니다. 나는 이미 몇 가지 아이디어를 시도했지만, 모두 최소한의 성공 만이 있습니다.

참고 : ORM이 내 문제를 잘 해결할 수 있음을 알고 있지만, 현재 작업중인 현재 프로젝트에서는 이것이 가능하지 않습니다. 단순한 ADO.NET DataSets가해야 할 일입니다.

답변

1

Windows Presentation Foundation Unleased (Adam Nathan)에 따르면 기본보기를 ListCollectionView로 캐스팅하고 사용자 지정 IComparer 구현을 CustomSort 속성으로 설정할 수 있습니다.

+0

건배. 나는 다른 고급 시나리오를 잘 다루는 경우에 그 책을 살펴볼 수 있습니다. :) – Noldorin