2012-06-15 21 views
5

Ngay bây giờ (mặc định) khi bạn bấm vào tiêu đề trên người dùng có thể sắp xếp DataGridColumn nó sắp xếp nó tăng dần khi nhấp chuột đầu tiên và giảm dần khi nhấp chuột thứ hai.Cách thay đổi hướng sắp xếp đầu tiên trên WPF DataGridColumn

Làm cách nào để làm cho nó sắp xếp giảm dần trên nhấp chuột đầu tiên và tăng dần khi nhấp chuột thứ hai?

Trả lời

8

tôi đã tìm ra một cách để làm điều đó, không chắc chắn nếu nó là cách tốt nhất. Nhưng về cơ bản khi sự kiện sắp xếp kích hoạt và SortDirection hiện tại là null, tôi đặt nó thành Ascending để trình sắp xếp mặc định sẽ đảo ngược SortDirection thành giảm dần và điều này chỉ xảy ra trong lần đầu tiên bởi vì đó là lần duy nhất SortDirection là null.

myGrid.Sorting += (s, e) => e.Column.SortDirection = e.Column.SortDirection ?? ListSortDirection.Ascending; 
+0

Tại sao chúng ta không thể nói: "e.Column.SortDirection = ListSortDirection.Ascending"? – Joe

+0

@ Joe hey, bởi vì tôi chỉ muốn đặt nó thành ListSortDirection.Ascending nếu giá trị chưa bao giờ được đặt trước (SortDirection == null) ... về cơ bản, mẹo là lần đầu tiên bạn bấm vào hướng sắp xếp nó sẽ kích hoạt sự kiện, bạn thiết lập hiện tại null SortDirection để tăng dần để lưới điện sau đó thấy rằng nó hiện đang tăng dần và sau đó nó flips nó để giảm dần ... –

+0

oh ... tôi thấy nó bây giờ ... tôi nghĩ rằng tôi phải có mis- đọc mã của bạn lần đầu tiên tôi nhìn thấy nó. – Joe

0

Tôi đã thực hiện một điều tương tự trong Winforms. Xử lý sự kiện DataGrid.Sorting, sau đó lập trình đảo ngược thứ tự sắp xếp nếu nó không phải là "không".

Kiểm tra liên kết này cho những gì này trông giống như trong WinForms: DataGridViewColumn initial sort direction

0

Dưới đây là một phiên bản mở rộng của câu trả lời được chấp nhận (Tôi không phải là một fan của ký hiệu nhỏ gọn đó):

private void _myGrid_Sorting(object sender, DataGridSortingEventArgs e) 
{ 
    if (e.Column.SortDirection == null) 
     e.Column.SortDirection = ListSortDirection.Ascending; 
} 
Các vấn đề liên quan