3

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

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

4

3 回答 3

3

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

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

于 2012-05-11T13:47:15.473 回答
0

我对您的情况并不完全清楚。“Persons”是 ObservableCollection 吗?但是,您是说它具有“讲座”属性,而标准 ObservableCollection 并非如此。这是一个继承自 ObservableCollection 的新类,它有一个“Lectures”属性,也是一个 ObservableCollection?

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

于 2012-05-11T14:06:57.980 回答
0

虽然我(和一般的 WPF)更喜欢ObservableCollection,但我建议你使用BindingList这个“特定”的目的。

据我所知,BindingList在另一种BindingList情况下,将集合更改通知向上传播,而无需任何额外的管道。

试着让我知道。

于 2012-05-11T14:13:55.913 回答