从列表框中删除项目
我尝试使用以下代码行使用 C# 代码从列表框中删除项目:
search_history.Items.RemoveAt(selected);
但是我收到以下消息:只读集合不支持操作。
此问题的解决方案是什么除了重置列表框并重新输入项目之外还有其他问题吗?
I am trying to remove an item from a listbox using C# code using the following line of code:
search_history.Items.RemoveAt(selected);
However I get the following message: Operation not supported on read-only collection.
What is the workaround solution for this problem other than resetting the listbox and entering the items all over again?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您应该将 ListBox 绑定到
ObservableCollection
< /a>,通过设置serach_history.ItemsSource = myObservableCollection
然后你可以做
myObservableCollection.Remove(search_history.SelectedItem)
并且该项目将从集合中删除,并且 UI 将相应更新。一般来说,您应该始终致力于使用 数据绑定,而不是直接将项目添加到集合中。
You should bind your ListBox to a
ObservableCollection<T>
, by setting theserach_history.ItemsSource = myObservableCollection
Then you can do
myObservableCollection.Remove(search_history.SelectedItem)
and the item will be removed from the collection, and the UI will update accordingly.In general, you should always aim to use Data Bindings rather than add items directly to a collection.
itemsource 的项目应实现 INotifyCollectionChanged 接口。为了简化问题,您可以使用 ObservableCollection<; T>而不是列表< T>。
然后使用下面所示的代码将会很好地工作:
希望有帮助。
Item of the itemsource should implement the INotifyCollectionChanged interface. To simplify matters, you can use the ObservableCollection< T > instead of the List< T >.
Then using the code shown below will work well:
Hope that helps.