Как мне сохранить порядок сортировки элементов в WPF ItemsControl? - PullRequest
3 голосов
/ 03 июля 2011

В моем приложении есть сортируемый ListBox, который содержит серию элементов со свойством DisplayOrder. Элементы первоначально сортируются с помощью DisplayOrder, но пользователь может изменить их порядок, перетаскивая их.

Я установил начальный порядок сортировки, установив для ItemSource объекта ListBox значение CollectionViewSource с моим SortDescription.

После выполнения операции перетаскивания, как мне обновить свойство DisplayOrder затронутых элементов?

Это то, что я делаю в обработчиках событий для моей операции удаления или есть способ привязать индекс ListBox к моему свойству DisplayOrder?

1 Ответ

0 голосов
/ 23 августа 2011

Я обработал это в коде файла xaml. Я передал действие события своей модели представления, а затем выполнил действия в коде и позволил INotify обновить пользовательский интерфейс с новым порядком.

View

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

}
...