![]() |
1
8
这很有趣,可能是一个bug。不过,这是一个很常见的控制和场景,我怀疑可能会发生其他事情。我发现了一个与这个问题类似的参考。 here . 为解决这一问题提供的建议如下:
我想这里的理论是,Equals中的bug会以某种方式抛出ListView中的逻辑。请确认您没有重写equals并发布您的结果。如果您没有,并且您在这里没有任何其他帮助,我建议您将此作为Bug归档 Microsoft Connect . |
![]() |
2
0
这是一个有答案的旧线索,但我想我会添加我自己的经验。 我有一个类似的问题,多行被选中,即使我的ListView的SelectionMode是单行的。这种行为非常零星,而且 不是 与集合中彼此相等的项相关。 我的ListView已将itemsource绑定到ObservableCollection集合。 我发现只有当我的收藏中有超过5000件物品时,这种行为才会出现。我通过创建临时集合,然后设置绑定集合来解决此问题。这将我的ListView上的更新减少到只有一个更新。 也许不是最正确的解决方案,但它在我的案例中起作用,希望能帮助其他人。 |
![]() |
3
0
把我的想法抛到这根旧线上…我也遇到了这个问题,是的,删除了我的自定义equals和gethashcode覆盖修复了它,但是,与Jerry答案中的引用不同,我的equals和gethashcode覆盖方法确实是正确编写的。 对我来说,当选择的数据被更改时,问题就表现出来了。当更改在ListView中正确显示时,它仍然处于选中状态。 虽然我找不到一个好的解释,我的 个人猜测 是ListView中的代码可能假定数据不会更改(或者至少记录的哈希值不会更改,这取决于数据的值),并且当哈希值更改时,它无法“找到”记录来取消选择它。通过删除自定义的equals和gethashcode,.net返回到一个更通用的版本,该版本通过对象的引用而不是其值来标识对象。 现在,继续尝试一个数据报,看看它是否对我有效… |
![]() |
A B · C#Excel自动调整列避免长文本时出错 4 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 4 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 4 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 4 月前 |