protected virtual void ColumnCollectionChanged (object sender, CollectionChangeEventArgs e)
{
// UpdateIndex() is not invoked here (even if the sort
// column is being removed).
// PropertyDescriptor Add
if (e.Action == CollectionChangeAction.Add)
OnListChanged (new ListChangedEventArgs (ListChangedType.PropertyDescriptorAdded, 0, 0));
// PropertyDescriptor Removed
if (e.Action == CollectionChangeAction.Remove)
OnListChanged (new ListChangedEventArgs (ListChangedType.PropertyDescriptorDeleted, 0, 0));
// PropertyDescriptor Changed
if (e.Action == CollectionChangeAction.Refresh)
OnListChanged (new ListChangedEventArgs (ListChangedType.PropertyDescriptorChanged, 0, 0));
}