问题绑定ObservableCollection上的ListBox <t> </t>

时间:2010-03-16 10:08:52

标签: wpf binding listbox observablecollection

我有一个奇怪的“问题”。有人可以解释一下原因:

如果我有一个ObservableCollection,两次(或更多次)具有相同值的项目,那么ListBox中这些值的选择将无法正常工作?

实际上,当我点击一个项目时ListBox正在做什么(即使在单个项目选择中):它从ObservableCollection集合中选择具有匹配值的第一个项目。因此,如果集合中有多个具有相同值的项目,则只会选择第一个项目!

2 个答案:

答案 0 :(得分:2)

因为您输入集合的对象具有相同的引用。您应该在每种情况下创建新实例或覆盖Equal函数并编写用于标识项目的逻辑。 WPF ListBox调用Object.Equal函数来识别项目是否相同。

希望这有帮助

答案 1 :(得分:0)

您需要创建一个新对象来保存每个对象。

MyCollection.Add(new MyContainer() { Data = myObject } );

这样,列表框将正确选择对象,因为它具有唯一的容器。

如果您使用ViewModels

,这将是隐含的