using System; using System.Collections.Generic; using System.ComponentModel; public class SortableBindingList : BindingList { public SortableBindingList(IList list) : base(list) { } public SortableBindingList() { } public void Sort() { Sort(null, null); } public void Sort(IComparer comparer) { Sort(comparer, null); } public void Sort(Comparison comparison) { Sort(null, comparison); } private void Sort(IComparer comparer, Comparison comparison) { // if (typeof(T).GetInterface(nameof(IComparable)) == null) return; var raiseListChangedEvents = this.RaiseListChangedEvents; this.RaiseListChangedEvents = false; try { var items = (List) this.Items; if (comparison != null) items.Sort(comparison); else items.Sort(comparer); } finally { this.RaiseListChangedEvents = raiseListChangedEvents; ResetBindings(); } } }