我有一个带有 DataGrid 的 Silverlight 应用程序,其中包含一些自定义列,并且一切运行良好。然后我更新到 VS 2008 SP1 的 Silverlight 3 工具并重建它。现在它有以下问题:
修改集合时不会添加行。ItemsSource 属性(并且一直是)设置为 ObservableCollection 实例,该实例会在其内容发生更改时发出通知。这对 Silverlight 2 来说效果很好。但是,在 Silverlight 3 中,要让它完全正常工作,我现在必须为空,然后重新设置 ItemsSource - 这似乎我在隐藏一个更大的问题,但我无法弄清楚那是什么可能。
我不能再选择一行或一个单元格了。如果幸运的话,我可以在它停止工作之前选择一整行。
我不能编辑任何东西。我怀疑这与前一点有关。
我会在可能的情况下发布一些资源,但首先我必须将其精简到最低限度。与此同时,我希望有人可能对这里可能发生的事情有所了解。我对后两点的直觉是我的绑定不再起作用,但这只是一个猜测,如果是这样,我不知道是哪一个。
感谢任何人都可以提供的任何帮助。
更新
所以,我终于将我的问题简化为一个简单的工作/不工作比较。Equals
如果我覆盖我的元素类型,似乎会出现问题。一旦我这样做,ObservableCollection
似乎包含该类型的东西就会发生奇怪的事情,并且我的应用程序会中断。为了使它更有趣,有一个检查以确保重复的项目甚至不会接近被添加到集合中。我不完全知道为什么ObservableCollection
在插入项目时需要比较相等性(堆栈跟踪表明它正在使用IndexAt
),但这似乎导致了问题。
那么,有什么想法吗?