在 ObservableCollection上绑定 ListBox 时出现问题
我有一个奇怪的“问题”。有人可以解释一下为什么吗:
如果我在 ObservableCollection 中有两次(或更多次)具有相同值的项目,那么 ListBox 中这些值的选择将无法正常工作?
事实上,当我单击一个项目时,ListBox 正在做什么(即使在单个项目选择中):它从 ObservableCollection 集合中选择具有匹配值的第一个项目。因此,如果集合中有多个具有相同值的项目,则仅选择第一个!
I have a strange "problem". Could someone explain me why :
If I have in an ObservableCollection, twice (or more time) an item with the same value, then the selections of those values in the ListBox won't work properly ?
In fact, what the ListBox is doing when I click on an item(Even in single item selection) : It selects the first item from the ObservableCollection collection with a matching value. so in the case if multiple items with same value are in the collection, then only the first one will be selected !
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
因为您输入到集合中的对象具有相同的引用。您应该在每种情况下创建新实例或覆盖 Equal 函数并编写用于识别项目的逻辑。 WPF ListBox 调用 Object.Equal 函数来识别项目是否相同。
希望这有帮助
Because objects you entered to collection have same references. you should create new instances in each case or override Equal function and write your logic for identifying items. WPF ListBox calls Object.Equal function to identify if the items are same.
Hope this helps
您需要创建一个新对象来保存每个对象。
即,
这样列表框将正确选择对象,因为它具有唯一的容器。
如果您使用 ViewModel,这将是隐式的
You need to create a new object to hold each object.
I.e.
This way the listbox will select the objects properly as it has unique containers.
This would be implicit if you were using ViewModels