26071986
26071986

Reputation: 2330

ObservableCollection of objects containing Lists

I am using an ObservableCollection for databinding as ItemsSource for DataGrid. Collection contains complex type objects. One of this type properties is a List of strings.

Just for now I see that when I update this List property from code nothing changes in the UI (the primary binding works fine). So, my question is: is it an expected behaviour? Maybe I should not use List as part of the type, but also use an ObservableCollection?

Update

Mode is set to OneWay.

Upvotes: 2

Views: 1472

Answers (4)

Rune Andersen
Rune Andersen

Reputation: 1705

Yes it is expected behaviour. The observable collection only notifies of changes to its own contents - that is add, delete, reorder.

What you are looking at is a change to an element in the observablecollection - if you want to see your changes to the class you put in, your element has to implement INotifyPropertyChanged.

So currently: If your list property on you complex object changes you won't see it, however if you change that too to be an observablecollection you could see changes to that collection in a sub-itemscontrol like a combobox - but not if you change the collection object to another one - so if you do not implement INotifyPropertyChanged you should set the collectionproperty before the binding is applied.

Upvotes: 0

Syeda
Syeda

Reputation: 1205

When you are updateding your list u have to call INotifyPropertyChange other wise UI wont get update the list result..

INotifyPropertyChange is the indication that here some changes occurred in the items source so update it.

Upvotes: 0

Jehof
Jehof

Reputation: 35544

Use a collection, instead of List, that implementes the interface INotifyCollectionChanged (like ObservableCollection). Then changes to the collection get populated to the ui.

Upvotes: 2

Related Questions