Wpf 是否使用datagrid.selecteditem从一个observablecollection中删除Grep对象并将其删除到另一个集合中?
我有个问题。我有两个可观察的集合,它们的对象与内容相同 我使用observablecollection从数据网格中grep一个对象Wpf 是否使用datagrid.selecteditem从一个observablecollection中删除Grep对象并将其删除到另一个集合中?,wpf,datagrid,observablecollection,selecteditem,Wpf,Datagrid,Observablecollection,Selecteditem,我有个问题。我有两个可观察的集合,它们的对象与内容相同 我使用observablecollection从数据网格中grep一个对象 datagrid.selecteditem as object 并希望将其从第二个可观察集合中删除。line语句看起来像 obscollection.remove(datagrid.selecteditem as object); 这些对象完全相同,但当我计算obscollection时,该对象未被删除 我怎样才能解决这个问题?请不要问我为什么需要两个内容相同的
datagrid.selecteditem as object
并希望将其从第二个可观察集合中删除。line语句看起来像
obscollection.remove(datagrid.selecteditem as object);
这些对象完全相同,但当我计算obscollection时,该对象未被删除
我怎样才能解决这个问题?请不要问我为什么需要两个内容相同的集合;) 当你说“对象完全相同”时,你的意思是它们是等价的,还是它们是相同的实例?我的猜测是它们是等价的,但实际上它们不是同一个对象实例。ObservaleCollection的.remove()方法将查找引用相等,因此,如果它不是同一个对象实例,它将找不到您要查找的对象(因此不会删除它)
我建议您查看有关对象等价性的信息,并与之交谈,正如您所做的那样(如果您进行搜索,则会发现更多)
如果两个集合具有等效的对象,但不引用同一实例,则有许多简单的解决方案。一种方法是实现IComparable接口,或者使用类似LINQ的东西在第二个集合中找到等效对象并手动删除它
希望这能有所帮助。是的,它是等效的,而不是相同的。我会读这篇文章的,谢谢