在 ObservableCollection上绑定 ListBox 时出现问题

发布于 2024-08-24 22:11:17 字数 230 浏览 10 评论 0原文

我有一个奇怪的“问题”。有人可以解释一下为什么吗:

如果我在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

饭团 2024-08-31 22:11:17

因为您输入到集合中的对象具有相同的引用。您应该在每种情况下创建新实例或覆盖 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

神仙妹妹 2024-08-31 22:11:17

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

即,

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

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

如果您使用 ViewModel,这将是隐式的

You need to create a new object to hold each object.

I.e.

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

This way the listbox will select the objects properly as it has unique containers.

This would be implicit if you were using ViewModels

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文