2011-07-12 69 views
2

拖拽datagrid中的某些列後,如何將MVVM中的新訂單傳遞給Viewmodel?如何在重新排序datagrid的列之後獲取新的列順序?

EventArgs是非常奇怪的。

DataGrid_Reordered傳遞只包含單個列的DataGridColumnEventArgs。我該怎麼處理它?我如何知道列的新順序?

顯然列的順序是由DisplayIndex確定的,但我怎麼知道舊值是什麼以及新值是什麼,這與整組列的關係如何?

非常感謝,

+0

也許這個答案是對你有用 http://stackoverflow.com/questions/1379925/wpf-listview-column-reorder-event – LPL

回答

0

尼斯問題:-)我猜你的應用程序重新啓動後列順序的持續性後是。

我不是很喜歡網格的迷,所以我沒有任何具體的建議,但它聽起來像你最終將在視圖模型(或一個新的視圖模型),它爲列和它們的順序建模。

我想你必須關閉AutoGenerateColumns,在Xaml中定義需要的列,並在每列的Header和DisplayIndex屬性上使用雙向綁定來綁定VM中的適當值。

通過這種方式,您可以使用MVVM Light中的EventToCommand行爲,將其綁定到網格的ColumnReordering事件和視圖模型中的RelayCommand。由於虛擬機負責保存列的順序,所以當事件觸發時,它將在那裏存在。

HTH