コレクションからアイテムを取得する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 を使えば可能になると思いました。