У меня есть ListBox
(x: Name = notesList
) в моем приложении WPF, которое берет предметы по ItemsSource
из коллекции. Коллекция является Notes
собственности в моем классе Data
и имеет тип ObservableCollection<Note>
. Я связываю это следующим образом: (data
является Data
объект, который имеет некоторые элементы в Notes
)TwoWay binding listbox - удаляемый элемент
Binding bind = new Binding();
bind.Mode = BindingMode.TwoWay;
bind.Source = data;
bind.Path = new PropertyPath("Notes");
notesList.SetBinding(ListBox.ItemsSourceProperty, bind);
В переплетные работы, элементы отображаются в ListBox. Я установил привязку TwoWay, потому что я хочу, чтобы коллекция notesList
и Notes
была синхронизирована. Проблема возникает при попытке удалить выбранный элемент таким образом:
NotesList.Items.RemoveAt(notesList.SelectedIndex);
я получаю исключение: «Операция не действует при ItemsSource используется доступ и изменять элементы с ItemsControl.ItemsSource вместо этого.».
Мой вопрос: Должен ли я использовать функцию коллекции для удаления элемента? data.Notes.RemoveAt(index)
? Есть ли способ удалить элемент, используя класс ListBox
, чтобы он привел к удалению элемента в коллекции? Я думал, что использование TwoWay Binding станет возможным.