C#绑定到另一个可观测集合中的可观测集合

C#绑定到另一个可观测集合中的可观测集合,c#,wpf,binding,observablecollection,C#,Wpf,Binding,Observablecollection,我有一个observeCollection,其中包含另一个observeCollection。在我的WPF中,我为Persons.touctions设置了一个绑定。 我现在的问题是,当我更改“讲座”集合中的任何值时,“人员”集合也不会通知我的绑定。在将一个ObservableCollection用于另一个ObservableCollection时,这通常是一个问题吗 如何解决这个问题,以便我的绑定做出反应?ObservableCollection实现,它会通知您集合本身的更改(添加、顺序更改等)

我有一个observeCollection,其中包含另一个observeCollection。在我的WPF中,我为Persons.touctions设置了一个绑定。 我现在的问题是,当我更改“讲座”集合中的任何值时,“人员”集合也不会通知我的绑定。在将一个ObservableCollection用于另一个ObservableCollection时,这通常是一个问题吗


如何解决这个问题,以便我的绑定做出反应?

ObservableCollection实现,它会通知您集合本身的更改(添加、顺序更改等)


如果要更新绑定,则必须实现ObservaleCollection中包含的实际对象。您可能会注意到,集合也实现了该接口,但这是通知集合对象本身属性的更改,而不是其内容属性的更改。

我不完全清楚您的场景。“人”是一个可观察的集合吗?然而,你是说它有一个“讲座”属性,这不是标准的ObservableCollection的情况。这是从ObservaleCollection继承的一个新类,它的“讲座”属性也是ObservaleCollection吗

我猜你已经有了一个可观察到的Person对象集合,它们本身也有一个可观察到的讲座集合。是这样吗?如果是这样的话,可能您只是构建了不正确的绑定。

虽然我(和WPF通常)更喜欢
ObservableCollection
,但我建议您使用
BindingList
来处理这个“特定”的问题

据我所知,另一个
BindingList
中的
BindingList
会将集合更改通知传播到层次结构中,而不需要任何额外的管道


试着让我知道。

这是一片很好的Caliburn.Micro,可以满足您的需要。它不需要MVVM。将代码封送到UI线程、INPC(包括从类的作用域之外手动提升更改的属性)和BindableCollection,后者继承自ObservaleCollection并处理更改的属性和更改的集合&添加额外的功能以更好地控制。只要从这个基类继承就可以了。