我的应用程序中有一个可排序的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

}

10-08 11:45