В моей программе у меня есть TreeView
узлов, которые мне нужно, чтобы иметь возможность перемещаться вверх и вниз, в основном изменять порядок. Мой TreeView
- это ObservableCollection
конкретной модели данных. Каждый узел имеет свойство «Ранг», это значение, которое я хотел бы отсортировать. С учетом сказанного я упомянул this question. Из этого вопроса я обнаружил это blog page. Я пытаюсь использовать второй метод, включающий функцию sort
List
.InvalidOperationException при сортировке ObservableCollection
Это пример того, что я смотрю на:
List<Person> list = new List<Person>(people);
list.Sort();
Пожалуйста, обратите внимание, что «место» значение каждого узла в рабочем состоянии и правильно меняется. Мне просто нужно найти способ переупорядочить сбор, основанный на этом свойстве, и отразить его в представлении.
Моя проблема: При попытке реализовать вышеупомянутое решение я получаю InvalidOperationException
. Я чувствую, что не понимаю, как сообщить List
для сортировки, основанной на ранге.
Что мой код выглядит следующим образом:
List<TreeModel> sortedTree = new List<TreeModel>(TreeCollection);
sortedTree.Sort();
Что я здесь отсутствует? Как сортировать коллекцию на основе свойства ранга и отражать эти изменения в представлении?
спасибо.
* Я полагаю, что, возможно, я опубликовал об этом раньше, поэтому, если по какой-то причине этот вопрос слишком похож на мой старый, я просто удалю старый.
Ладно, так что это делает его так, что 'list' будет сортировать основан от целого числа, хранящегося в ранге. После этого мне не нужно будет устанавливать текущее 'ObservableCollection' равным новому отсортированному? –
@ Ericafterdark да точно, вам нужно либо создать новый «ObservableCollection», либо очистить/повторно заполнить существующий (первый, вероятно, проще). – McGarnagle
Это то, что я только что сделал: 'CurrentCollection = new ObservableCollection (sortedTree);'. Однако это не влияет на мнение. Может быть, я забыл PropertyChanged? –