List<T>
не поддерживает события изменения; BindingList<T>
будет хорошей заменой для поддержки этого сценария, а также поддерживает события изменения уровня элемента, если ваш тип T
реализует INotifyPropertyChanged
.
В версии 3.0 и выше также существует ObservableCollection<T>
, который действует аналогично BindingList<T>
. Все сводится к интерфейсам, таким как IBindingList
, IBindingListView
и т. Д.
из комментариев; для примера 2.0 / 3.0 добавления Find
к BindingList<T>
:
public class MyBindingList<T> : BindingList<T>
{
public T Find(Predicate<T> predicate)
{
if (predicate == null) throw new ArgumentNullException("predicate");
foreach (T item in this)
{
if (predicate(item)) return item;
}
return default(T);
}
}
Обратите внимание, что в 3.5 (или в .NET 2.0 / 3.0 с LINQBridge и C # 3.0) это вам не нужно - любой из методов расширения LINQ будет делать то же самое.