Tôi có một ListView (GridView) mà tôi muốn sắp xếp theo 2 cột, vì vậy nếu 2+ mục có cùng giá trị trong Cột 1, nó sắp xếp theo Cột 2. Khá dễ dàng. Nhưng các chuỗi rỗng xuất hiện ở đầu khi phân loại A-Z. Tôi muốn chuyển chúng xuống đáy. Tôi đã thực hiện một so sánh (IComparer) mà chăm sóc này, nhưng tôi không chắc chắn làm thế nào để sử dụng nó.WPF - Sử dụng một so sánh tùy chỉnh khi sắp xếp theo nhiều cột
Dưới đây là đoạn code tôi đã cố gắng:
Dim view As ListCollectionView = CollectionViewSource.GetDefaultView(myCollection)
Using view.DeferRefresh
view.SortDescriptions.Clear()
view.SortDescriptions.Add(New SortDescription(sortHeader.Header, direction))
view.SortDescriptions.Add(New SortDescription(otherColumn, direction))
view.CustomSort = New MyComparer()
End Using
Vấn đề là Comparer của tôi được đưa ra một loại lớp học của tôi thay vì giá trị của tài sản/cột được sắp xếp theo. Vì vậy, nếu lớp học là Foo và tôi đang phân loại bởi Foo.Bar, tôi nhận được toàn bộ lớp Foo, không chỉ là giá trị của Bar (mà thực sự là tất cả những gì cần phải quan tâm, vì đó là những gì nó sắp xếp theo).
Làm cách nào để so sánh của tôi biết được thuộc tính nào cần so sánh? Có lẽ tôi đang làm điều gì đó sai ở đây, bởi vì điều này không có ý nghĩa gì cả. Tôi dự kiến nhận được một Chuỗi (loại tài sản) cho x và y ...
Có ai biết cách thực hiện việc này không?
Điều này hoạt động khi sắp xếp theo một cột, nhưng vì PropertyPath đề cập đến cột được nhấp (cũng là sortHeader trong mã của tôi), nó trông giống cột đó ngay cả khi so sánh cột thứ hai (thứ hai SortDescription)). Làm thế nào để so sánh biết nếu nó nên nhìn vào cột đầu tiên (nhấp vào một) hoặc thứ hai (khi có 2+ có cùng giá trị trong cột 1)? – grant
Đã thực hiện một số thay đổi ở trên để thử trả lời cho bạn câu hỏi chính xác :) – Jose