2009-06-12 3 views
12

정렬을위한 SortDescriptions를 가진 CollectionViewSource에서 파생 된 컬렉션을 정렬하려고합니다. 불행히도 내 자신의 사용자 지정 IComparer를 사용할 수 있어야하지만 그 방법을 찾을 수 없습니다. DataGrid를 생각하면 나 자신의 다중 열 정렬 알고리즘이 있습니다. 한 가지 방법은 CollectionViewSource와 내 true 데이터 소스 사이에 추가 레이어 인 CollectionChanged를 구현하는 컬렉션을 사용하는 것이지만 모든 제안이 있으면 더 나은 방법을 선호한다고 생각합니다.사용자 지정 IComparer를 사용하여 CollectionViewSource 정렬

답변

13

Bea Stollnitz에는 사용자 지정 정렬 예가 here 있습니다.

이 기사의 요점은 약한 ICollection 또는 IEnumerable 인터페이스가 아닌 IList 구현으로 CollectionViewSource을 바인드하는 것입니다. 이 경우 속성은 CollectionView 대신 ListCollectionView 인스턴스를 반환합니다. 그런 다음 ListCollectionView.CustomSort을 사용하여 IComparer을 할당하여 사용자 지정 정렬을 수행 할 수 있습니다. 작업을 쉽게하기 위해 Comparer<T>.Create 메서드를 사용하여 전체 클래스 대신 Comparison 대리자를 사용할 수도 있습니다.

+1

이 기사의 요점은'CollectionViewSource'를 약한'ICollection' 또는'IEnumerable' 인터페이스가 아닌'IList' 구현에 바인딩하는 것입니다. 그것으로,'View' 속성은'CollectionView' 대신에'ListCollectionView' 인스턴스를 반환합니다. 그런 다음'ListCollectionView.CustomSort'를 사용하여 사용자 정의 정렬을 수행하는 IComparer를 할당 할 수 있습니다. 작업을 쉽게하기 위해 [Comparer .Create'] (http://msdn.microsoft.com/en-gb/library/hh737198.aspx) 메서드를 사용하여 a 대신 'Comparison' 대리자를 사용할 수 있습니다. 전체 클래스. – ygoe

관련 문제