简而言之,我的问题是WPF DataGrid不允许我选择第一行以外的任何内容。当我第一次用数据填充时,没有选择任何行。接下来,无论我点击哪一行,第一行都会亮起。当我使用OneWayToSource绑定SelectedItem属性时,我看到确实选择了正确的行。如果我选择再次单击另一行,则不会发生任何事情:UI仍然停留在第一行,而SelectedItem属性保留以前正确的值。此时,我必须按住第一个行来取消选择。这让我可以重复上述情况。
换句话说: - UI似乎与实际选择的内容不同步。 - 需要按住Ctrl键才能取消选择。 - 即使SelectedItem属性指示选择了不同的行,也必须在第一行执行Ctrl-click。
我理解这是奇怪的行为。我试图在一个单独的项目中复制它但没有成功。因此,我只是把它扔到那里,看看是否有人有任何想法,为什么它可能这样做?
我在单独的项目中没有重复的唯一事情是使用MEF进行View / ViewModel连接。其他一切都是一样的。
编辑:我刚用ListBox替换了所说的DataGrid,遇到了同样的问题。我正在使用Snoop试图找出可能会对控件应用的内容,这会改变它的行为。答案 0 :(得分:3)
我的问题是我添加到DataGrid和ListBox的对象已经重写了Equals()和GetHashCode()函数。这些确实搞砸了两个控件呈现选择哪个项目的方式,因此解释了SelectedItem问题。最后,通过简单地删除/修复这些覆盖来解决所有问题。
活泉!