有人能夠提供一些指導這個問題:WPF DataGrid排序 - 數據可視化排序。底層數據不排序
我有一個DataGrid綁定到一個DataTable。
相關XAML &代碼:
<DataGrid Name="dataGrid1" IsReadOnly="True" ItemsSource="{Binding}"
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" />
<DataGridTextColumn Header="Path" Binding="{Binding Path=Path}" />
</DataGrid.Columns>
dataGrid1.DataContext = gridData.dt; // this is a DataTable with 3 columns.
第三dT柱未在網格上顯示。它被用作id。
數據表在第一列進行排序並顯示內容。 用戶可以通過點擊它們在名稱或路徑列/標題上進行排序,並且視覺排序顯示正常/顯示正常。問題是,當我通過選擇特定行來檢查網格的數據時,DataTable的數據仍未排序。
我的問題是,在用戶對某列進行排序時更新網格底層數據的最佳方法是什麼? (這需要在適當的列排序數據表)
這是我觀察到:
- 添加Click事件處理程序上DataGridColumnHeader不會觸發事件。 我觀察到columnHeader.SortDirection(發件人中)的值是CURRENT值,不是目標值。它是正確的說,給定列 排序順序經歷以下幾個階段: 空 - >升 降 - >升 上升到下降
I.E.通過了解當前狀態,下一個狀態是可確定的。
- 我可以在DataGridColumnHeader的SortDirection屬性中尋找升序/降序/ null的觸發器,但然後呢?我可以對此執行代碼嗎? 如果是這樣,你能告訴我一個代碼片段。
我有過類似的帖子了,並試圖執行以下操作:
通過我的DataGrid綁定到一個與CollectionViewSource實驗。作爲一個實驗,我捕獲了列標題單擊事件並強制列上的排序順序。這沒有奏效。 (我的實現可能是錯誤的嗎?)
我將SortedMemberPath =「xx」添加到我的XAML中以指定DataGridTextColumn條目。
任何幫助極大的讚賞。
操作並不比DataGridColumnHeader Click事件不同。 I.E. SortDirection是BEFORE值。 – 2012-08-17 20:24:08
我假設排序方向遵循上面指出的模式,並相應地編碼。我添加了一個字典,將第一列(名稱)映射到我的Id(第三個隱藏列)並相應地重新排序。也許不是最好的方法,但它工作正常。 – 2012-08-18 18:22:04