Удалить элемент из списка - PullRequest
0 голосов
/ 25 ноября 2011

Я пытаюсь удалить элемент из списка, используя код C #, используя следующую строку кода:

search_history.Items.RemoveAt(selected);

Однако я получаю следующее сообщение: Операция не поддерживается в коллекции только для чтения.

Каково решение этой проблемы, кроме сброса списка и повторного ввода элементов?

Ответы [ 3 ]

2 голосов
/ 25 ноября 2011

Вы должны привязать свой ListBox к ObservableCollection<T>, установив serach_history.ItemsSource = myObservableCollection

Затем вы можете сделать myObservableCollection.Remove(search_history.SelectedItem), и элемент будет удален из коллекции, а пользовательский интерфейс будет обновлен соответствующим образом.

Как правило, вы всегда должны стремиться использовать Привязки данных , а не добавлять элементы непосредственно в коллекцию.

0 голосов
/ 26 ноября 2011

Элемент источника данных должен реализовывать интерфейс INotifyCollectionChanged.Чтобы упростить задачу, вы можете использовать ObservableCollection вместо List .Тогда с помощью кода, показанного ниже, будет работать хорошо:

(yourlistbox.ItemsSource as ObservableCollection<T>).RemoveAt(selected);

Надеюсь, это поможет.

0 голосов
/ 25 ноября 2011
search_history.Items.Remove(search_history.SelectedItem);
...