コレクションからアイテムを取得するListBox(x:Name = notesList) が WPF アプリケーションにあります。ItemsSourceコレクションはNotes私のクラスのプロパティでDataあり、タイプはObservableCollection<Note>です。私はそれをこのようにバインドします: (dataは にDataいくつかのアイテムを持つオブジェクトですNotes)
Binding bind = new Binding();
bind.Mode = BindingMode.TwoWay;
bind.Source = data;
bind.Path = new PropertyPath("Notes");
notesList.SetBinding(ListBox.ItemsSourceProperty, bind);
バインディングが機能し、アイテムが ListBox に表示されます。notesListとNotesコレクションを同期させたいので、TwoWay バインディングを設定します。この方法で選択したアイテムを削除しようとすると、問題が発生します。
NotesList.Items.RemoveAt( notesList.SelectedIndex );
例外が発生します:「ItemsSource が使用されている間、操作は無効です。代わりに、ItemsControl.ItemsSource を使用して要素にアクセスして変更してください」。
私の質問: コレクション関数を使用して要素を削除する必要がありますか? data.Notes.RemoveAt(index)? ListBoxクラスを使用してアイテムを削除する方法はありますか?その結果、コレクション内のアイテムが削除されますか? TwoWay Binding を使えば可能になると思いました。