BindingList& INotifyPropertyChanged的

时间:2013-03-20 14:30:59

标签: c# bindinglist

我搜索了所有论坛,但我找不到我的问题的答案。也许我只是使用了错误的关键字。 我们假设我有一个Foo类:

class Foo
{
    string a;
    string b;
}

现在,许多Foo实例都保存在

BindingList<Foo> bf;

然后我有了第二个类,它实现了Foo类型的对象之间的某种关系:

class Bar
{
    Foo f1;
    Relation r;
    Foo f2;
}

同样,类Bar的许多实例都保存在

BindingList<Bar> bb;

在我的程序中的某个点上,我现在删除了Foo的一个实例,比如f7。

bb.Remove(f7);

是否有任何可能性,确实删除了那些保留对f7的引用的Bar实例? 目前,我挂钩了bf的ListChanged事件并手动遍历bb并杀死那些包含f7的Bar实例。有更聪明的方法吗?

感谢您的帮助, 吉

1 个答案:

答案 0 :(得分:1)

根据您的OP判断。我怀疑你想要这样的东西。您必须确保Foo中的Bar个对象是同一个实例,或者IEquatable上的Foo实施。

var barWhereFoosExist = bb.Where(x => x.f1.Equals(f7) || x.f2.Equals(f7));
foreach(Bar b in barWhereFoosExist)
{
  bb.Remove(b);
}

使用类似的东西尝试以上内容。

BindingList<Bar> bb = new BindingList<Bar>();
Foo f7 = new Foo();
Bar b = New Bar();
b.f1 = f7;
b.f2 = new Foo();