void SetList(IList l) { if (list is IBindingList) { ((IBindingList)list).ListChanged -= IBindingListChangedHandler; } list = l; item_type = ListBindingHelper.GetListItemType(list); item_has_default_ctor = item_type.GetConstructor(Type.EmptyTypes) != null; list_is_ibinding = list is IBindingList; if (list_is_ibinding) { ((IBindingList)list).ListChanged += IBindingListChangedHandler; if (list is IBindingListView) { ((IBindingListView)list).Filter = filter; } } ResetBindings(true); }