Вы на самом деле просите что-то, что является логическим противоречием. Предположим, у меня есть ListCollectionView
отсортировано в алфавитном порядке:
American
Continental
Festival
Imperial
Tower
Worldwide
Можно ли вставить Luxor
между American
и Continental
? Нет, если вид отсортирован. Есть только одно место, куда может пойти этот предмет. И где оно появляется в представлении , не зависит от того, где оно может появиться в базовом списке .
Не зная больше о вашем приложении, трудно точно знать, что предложить. Но если представление коллекции отсортировано, способ заставить элемент появляться в определенном месте в представлении состоит в том, чтобы назначить его ключам сортировки значение, которое, после обновления представления, заставит его появиться в желаемом месте. ,
Довольно тривиальный (и общий) способ сделать это - добавить свойство DateTime
в класс элемента данных, установить его в DateTime.Now
в конструкторе элемента и сделать его последним ключом сортировки, который использует представление , Затем при добавлении нового элемента задайте для его других свойств ключа сортировки значение текущего выбранного элемента. Если вы сделаете это, новые элементы всегда будут появляться в соответствующем месте, если вы не измените значения какого-либо из свойств ключа сортировки.
Сказав, что из других функций, которые вы хотите поддерживать, я считаю, что вам вообще не следует использовать ListCollectionView
для того, что вы называете sortedList
. Этот список не отсортирован. Это заказано , что совсем не одно и то же. Когда пользователь перемещает элемент вверх в списке, вы действительно хотите изменить его позицию.
Что вы, вероятно, хотите сделать, это реализовать список как ObservableCollection
и обернуть его в класс модели представления, который предоставляет Items
, SelectedItem
, AddNewCommand
, MoveUpCommand
, MoveDownCommand
и SaveCommand
свойства. Затем вы можете связать свойства ItemsSource
и SelectedItem
свойств ListBox
или ListView
с Items
и SelectedItem
в классе, а также привязать кнопки или гиперссылки или что-либо в пользовательском интерфейсе к командам. Команды будут манипулировать свойством Items
, используя Remove
и Insert
, и, поскольку Items
является ObservableCollection
, пользовательский интерфейс будет синхронизирован.