WPF ListView/GridView单选错误

Yog*_*esh 2 c# wpf listview

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

重现方式:

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

var customers = from c in _db.Customers
    orderby c.Name, c.City
     select c;
Run Code Online (Sandbox Code Playgroud)

将集合绑定到ListView:

dataGrid.ItemsSource = customers.ToList();
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

Jer*_*ard 8

这很有趣,可能是一个错误.这是一个常见的控制和场景,但我怀疑还有其他事情可能发生.我发现了一个参考的东西,类似于这样的问题在这里.给出解决问题的建议如下:

如果你在ListView中显示的对象中覆盖Equals,那就行了吧否则,你会得到各种有趣的行为......

我想这里的理论是,Equals中的一个错误会抛弃ListView中的逻辑.请确认您没有覆盖Equals并发布结果.如果您不是,并且在此处没有得到任何其他帮助,我建议您将此文件作为Microsoft Connect上的错误提交.