gpt4 book ai didi

c# - ListBox SelectionMode 单选多选

转载 作者:行者123 更新时间:2023-12-03 18:47:40 28 4
gpt4 key购买 nike

WPF 程序中使用 ListBox 时,我遇到了一个相当奇怪的问题。我已经将我的 ListBox SelectionMode 定义为 Single,但看起来即使在视觉上我无法选择多个项目,它也会在代码中发生。可以在这里看到: SelectionModeSingleWithMultipleSelected

当尝试做一个解决方法时,我尝试使用函数 UnselectAll,它相当奇怪地仍然选择了一个项目: UnselectAllStillSelected

作为最后的礼物,一旦选择了多个项目,如果我尝试单击我未选择的可视化项目,在代码中选择项目,我的应用程序会因 System.ArgumentException 而崩溃(我想它会尝试选择我的项目,实际上已经被选中了,所以它会因为添加一个完美的副本而崩溃?) ApplicationCrashOnListBoxClick

我调查了 ListBox is selecting many items even in SelectionMode="Single"有同样的问题,但在我的情况下,我无法直观地选择多个项目,而且我的项目完全不同,所以它并没有真正的帮助。

我在 ListBox 上没有任何自定义行为。单击可能会弄乱某些东西 ...

我的 ListBox.ItemsSource 绑定(bind)到项目列表。当调用 useItem 时,我将减少所选项目的属性值,但它仍然是同一个项目(我不重新创建它/删除它然后再次添加它)

我的问题从何而来?我该如何解决?

最佳答案

所以,终于找到了问题的根源。

有了自定义项,我不得不重新定义我的 Equals 函数。然后我不得不重新定义我的 GetHashCode 函数,我基于我的几个属性,包括我正在递减的字段......
因此,当我更改该字段时,我会同时更改我的 HashCode 并且我无法再访问我的项目。

更改我的 GetHashCode 函数以使其基于不可变字段解决了我的问题。

关于c# - ListBox SelectionMode 单选多选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38920282/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com