По умолчанию ItemsSource
имеет тип IEnumerable
. Сначала необходимо привести тип к типу, который имеет доступ к событию CollectionChanged
, а затем добавить обработчик для этого события.
((INotifyCollectionChanged)List1.ItemsSource).CollectionChanged +=
new NotifyCollectionChangedEventHandler(List1CollectionChanged);
public void List1CollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)
{
// Your logic here
}
Примечание: я приведу его к
INotifyCollectionChanged
в моем примере, но вы действительно можете привести его к любому объекту, который реализует это. Хотя в качестве лучшей практики вы должны приводить к наиболее универсальному типу, который дает вам доступ к необходимым методам / свойствам / событиям. Итак, в то время как вы
можете привести его к
ObservableCollection
, вам не нужно.
INotifyCollectionChanged
содержит нужное вам событие, и если вы когда-нибудь решите использовать какой-либо другой тип коллекции, который его реализует, это продолжит работать, тогда как приведение к
ObservableCollection
означает, что если вы однажды решите, что ваш список теперь типа
MyOwnTypeOfObservableCollectionNotDerivedFromObservableCollection
, чем это сломается. ;)
P.S. Это должно идти в коде XAML.