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

本文关键字:集合 观察 绑定 另一个 | 更新日期: 2023-09-27 18:34:03

我有一个包含另一个 ObserveableCollection 的 ObserveableCollection。在我的WPF中,我设置了对Persons.Lectures的绑定。我的问题是,现在当我更改"讲座"集合中的任何值时,"人"集合不会通知这一点,我的绑定也不会。当将一个可观察集合使用到另一个可观察集合中时,这通常是一个问题吗?

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

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

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

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

我在这里的情况并不完全清楚。 "人"是可观察的集合吗? 然而,你说它有一个"讲座"属性,而在标准的ObservableCollection上并非如此。 这是一个从 ObservableCollection 继承的新类,该类具有"Lectures"属性,也是 ObservableCollection?

我猜你有一个 ObservableCollection of Person 对象,它们本身有一个 ObservableCollection of Lectures。 是这样吗? 如果是这样,也许你只是错误地构造了绑定。

虽然我(和一般的WPF)更喜欢ObservableCollection,但我建议你对这个"特定"的脓包使用BindingList

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

试着让我知道。