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