我的应用程序中有一个可排序的ListBox,它包含一系列具有DisplayOrder属性的项目。这些项目最初由DisplayOrder排序,但用户可以通过拖放重新排序。
我通过使用SortDescription将ListBox的ItemsSource设置为CollectionViewSource来设置初始排序顺序。
发生拖放操作后,如何更新受影响项目的DisplayOrder属性?
这是我在drop操作的事件处理程序中做的事情,还是有一种方法将ListBox的索引绑定到我的DisplayOrder属性?
答案 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
}