我有一些方法,如:
public void RemoveItem(ObservableCollectioncollection, SomeClass instance) { if(collection.Contains(instance)) { collection.Remove(instance); } }
首先,即使集合包含实例,if
句子仍然返回false
.
其次,我删除了if句子,只是让集合可以删除实例.并且在执行之后,集合仍保留其原始项目,其中仍包含实例.
是引用问题,但如何解决?我只是想从的ObservableCollection中删除一个项目,并保持其显着的功能(这困扰了我在这里).
您的问题是您正在尝试从不在该集合中的集合中删除对象.它可能具有相同的属性值,但它不是同一个对象.如果您的对象具有唯一可识别的属性,则有一种简单的方法,例如Id
:
public void RemoveItem(ObservableCollection<SomeClass> collection, SomeClass instance) { collection.Remove(collection.Where(i => i.Id == instance.Id).Single()); }
我们的想法是,我们从集合中获取实际项目,然后将其传递给Remove
方法.