如何在WPF ItemsControl中保留项目的排序顺序?

时间:2011-07-02 21:09:33

标签: wpf data-binding sorting drag-and-drop listbox

我的应用程序中有一个可排序的ListBox,它包含一系列具有DisplayOrder属性的项目。这些项目最初由DisplayOrder排序,但用户可以通过拖放重新排序。

我通过使用SortDescription将ListBox的ItemsSource设置为CollectionViewSource来设置初始排序顺序。

发生拖放操作后,如何更新受影响项目的DisplayOrder属性?

这是我在drop操作的事件处理程序中做的事情,还是有一种方法将ListBox的索引绑定到我的DisplayOrder属性?

1 个答案:

答案 0 :(得分:0)

我在xaml文件后面的代码中处理了这个问题。我将事件操作传递给我的视图模型,然后在代码中执行操作,让INotify使用新订单更新UI。

查看

ChangedEvent (button click / drag drop / whatever)
{
    ViewModel.MoveItemToNewLocation();

}

查看模型

MoveItemToNewLocation()
{
   int newLocation = myList.IndexOf(SelectedItem); 
   int oldLocation = SelectedItem.DisplayOrder; 
   UpdateDisplayOrders(oldLocation, newLocation);
}

private void UpdateDisplayOrders(int oldlocation, int newlocation, object myitem)
{
   // Do move logic here

}
相关问题