2011-04-06 1 views
0

여러 열이있는 ListView (GridView)가 있고 지금까지는 알파벳 순으로 정렬 할 수 있지만 A-Z를 정렬 할 때 빈 문자열이 맨 위에 표시됩니다. 나는 이것을 끝까지 옮기고 싶다. 나는 마지막에 빈 문자열을 넣을 IComparer를 만들었지 만 ListView에서 사용하는 방법을 모르겠습니다. 여기에 내가 만든 비교자가 있습니다.끝에 빈 문자열을 사용하여 WPF GridView를 사전 순으로 정렬하는 방법은 무엇입니까?

Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare 
    If TypeOf x Is String And TypeOf y Is String Then 
     If x = "" And y = "" Then 
      Return 0 
     ElseIf x = "" And y <> "" Then 
      Return 1 
     ElseIf x <> "" And y = "" Then 
      Return -1 
     End If 
    End If 
    Return x.CompareTo(y) 
End Function 

답변

1

이 내용을 확인해보십시오. 다음과 같이 IComparer 형식의 사용자 지정 정렬기를 연결할 수 있습니다. http://ligao101.wordpress.com/2007/07/31/a-much-faster-sorting-for-listview-in-wpf/

+0

ListCollectionView에서 CustomSort를 사용했지만 문서에서와 같이 시도했지만 작동하지 않았습니다. 내 ListView에는 여러 개의 열이 있으며 각 열은 클래스의 속성에 바인딩됩니다. SortDescriptions를 사용하여 단일 열을 기준으로 정렬하므로 String (속성 유형)이 비교 자에게 전달 될 것으로 기대됩니다. 대신 내 수업 유형을 전달하는 것 같습니다. 왜??? 또한이 기사에서는 .ItemsSource를 사용하라고 나와 있지만 DataContext를 설정하기 때문에 Nothing/null입니다. 이것이 영향을 미칠 수 있습니까? – grant

+0

글쎄,이 작업을 얻을 수있는 유일한 방법은 비교 자의 매개 변수를 속성 이름으로 설정하고 속성 값을 가져 오기 위해 반사를 사용하여 열의 속성 이름을 설정하는 것이었지만이 방법은 여러 열 정렬 좀 더 구체적 인 새로운 질문을하고 있습니다. http://stackoverflow.com/q/5588353/403736 – grant

관련 문제