gpt4 book ai didi

c# - WPF ListView/GridView 单选bug

转载 作者:行者123 更新时间:2023-11-30 19:51:01 24 4
gpt4 key购买 nike

当 SelectionMode 设置为 Single 时,WPF 中的 ListView/GridView 存在一个奇怪的错误。

复制方式:

生成一个集合(该集合必须有足够的项目,这样ListView至少可以滚动2-3页):

var customers = from c in _db.Customers
orderby c.Name, c.City
select c;

将集合绑定(bind)到 ListView:

dataGrid.ItemsSource = customers.ToList();

在第一页上,更改您的选择 3-4 项。记住您之前选择的项目。使用鼠标滚轮向下滚动,以便您进入下一页。向上滚动。瞧!你会看到你点击的所有项目都被选中了?!此错误的图像: http://img261.imageshack.us/img261/133/listview.jpg

同样的问题也困扰着 Wpf 工具包的数据网格。

更奇怪的是,每个选择都附加到 SelectedItems 属性。因此,如果您更改了 10 次选择,则 SelectedItems 属性中将有 10 个项目,当前选择作为最后一个项目。

有人能告诉我为什么会这样吗?这是故意的还是错误?对我来说更像是一个错误。

其他人也遇到了这个错误。旧文章,但错误仍然存​​在: http://cs.blueberryislandmedia.com/blogs/blueberries/archive/2009/04/24/bug-in-wpf-listview-single-selection-mode.aspx

最佳答案

这很有趣,可能是一个错误。这是一个如此常见的控制和场景,但我怀疑可能会发生其他事情。我找到了一个与此问题相似的引用 here .给出的解决建议如下:

If you're overriding Equals in an object that's being displayed in a ListView, do it right Otherwise, you'll get all sorts of interesting behavior...

我猜这里的理论是 Equals 中的错误会以某种方式破坏 ListView 中的逻辑。请确认您没有覆盖 Equals 并发布您的结果。如果你不是,并且你在这里没有得到任何其他帮助,我建议你将此作为错误提交到 Microsoft Connect 上.

关于c# - WPF ListView/GridView 单选bug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1621239/

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