2011-02-08 67 views
2

总之,我的问题是WPF DataGrid不会让我选择除第一行以外的任何内容。当我第一次填写数据时,没有选择行。接下来,无论我点击哪一行,第一行都会亮起。当我使用OneWayToSource绑定SelectedItem属性时,我发现确实选择了正确的行。如果我选择再次点击另一行,则不会发生任何事情:界面仍停留在第一行,SelectedItem属性保留以前正确的值。在这一点上,我必须按住ctrl-点击第一行行才能取消选择。这使我可以重复上述情况。WPF DataGrid无法更改所选行:卡在第一行

换句话说: - 用户界面似乎与实际选择的内容不同步。 - 需要按住Ctrl键来取消选择。 - 即使SelectedItem属性指示选择了不同的行,也必须在第一行执行Ctrl-单击操作。

我明白这是奇怪的行为。我试图在一个单独的项目中复制它,但没有成功。因此,我只是把它扔在那里,看看有没有人有任何想法,为什么它可能会这样做?

我在单独项目中没有重复的唯一事情是使用MEF作为View/ViewModel连接。其他一切都是一样的。

编辑:我刚刚用一个ListBox替换了所说的DataGrid,并且遇到了同样的问题。我使用Snoop来试图找出可能应用于控件的内容,这会改变它的行为。

+0

由于这显然取决于您的具体代码,如果您可以提供上述代码将是有帮助的。 – 2011-02-08 16:31:24

回答

3

我的问题是,我添加到DataGrid和ListBox的对象已覆盖Equals()和GetHashCode()函数。这些真的搞砸了两个控件呈现哪个项目被选中的方式,因此解释了SelectedItem问题。最后,所有问题都通过简单地删除/修复这些覆盖来解决。

Woot!

+0

在这里发现了类似的问题:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/64529f60-fe7b-4cf6-a686-3933e22e5169 – Brett 2011-02-08 19:44:40