2011-07-12 60 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