我有一个ObserveableCollection,它包含另一个ObserveableCollection。在我的WPF中,我设置了对Persons.Lectures的绑定。 我的问题是,当我更改“讲座”集合中的任何值时,“人物”集合不会通知我和我的绑定。将ObserveableCollection用于另一个ObserveableCollection时,这通常是一个问题吗?
我如何解决这个问题,以便我的绑定能够做出反应?
答案 0 :(得分:3)
ObservableCollection实现INotifyCollectionChanged,它会通知您集合本身的更改(添加,更改顺序等)。
如果您希望更新绑定,则ObservableCollection中包含的实际对象必须实现INotifyPropertyChanged。您可能会注意到该集合也实现了该接口,但这是为了通知集合对象本身属性的更改,而不是对其内容属性的更改。
答案 1 :(得分:0)
我不清楚你的情况在这里。 “人”是一个可观察的集合吗?然而,你说它有一个“Lectures”属性,而标准的ObservableCollection则不然。这是一个从ObservableCollection继承的新类,它有一个“Lectures”属性,也是一个ObservableCollection?
我猜你有一个Person对象的ObservableCollection,它本身有一个ObservableCollection of Lectures。是这样的吗?如果是这样,也许你只是错误地构建你的Binding。
答案 2 :(得分:0)
虽然我(和WPF一般)更喜欢ObservableCollection
,但我建议您使用BindingList
来表示这个“特定”的用途。
据我所知,另一个BindingList
中的BindingList
会将集合更改的通知传播到层次结构中而不需要任何额外的管道。
试着让我知道。