我有一个奇怪的“问题”。有人可以解释一下原因:
如果我有一个ObservableCollection,两次(或更多次)具有相同值的项目,那么ListBox中这些值的选择将无法正常工作?
实际上,当我点击一个项目时ListBox正在做什么(即使在单个项目选择中):它从ObservableCollection集合中选择具有匹配值的第一个项目。因此,如果集合中有多个具有相同值的项目,则只会选择第一个项目!
答案 0 :(得分:2)
因为您输入集合的对象具有相同的引用。您应该在每种情况下创建新实例或覆盖Equal函数并编写用于标识项目的逻辑。 WPF ListBox调用Object.Equal函数来识别项目是否相同。
希望这有帮助
答案 1 :(得分:0)
您需要创建一个新对象来保存每个对象。
即
MyCollection.Add(new MyContainer() { Data = myObject } );
这样,列表框将正确选择对象,因为它具有唯一的容器。
如果您使用ViewModels
,这将是隐含的