Emulating a property just to do the sort is probably overkill.
The first thing to look at is Comparer<T>.Default
. It might, however, turn out that the easiest thing to do is to:
- extract the data into
List<T>
or similar - sort the extracted data
- disable notifications
- reload the data
- re-enable notifications
- send a “reset” message
btw, you should be disabling notifications during your existing sort, too.
public void Sort() {
// TODO: clear your "sort" variables (prop/order)
T[] arr = new T[Count];
CopyTo(arr, 0);
Array.Sort(arr);
bool oldRaise = RaiseListChangedEvents;
RaiseListChangedEvents = false; // <=== oops, added!
try {
ClearItems();
foreach (T item in arr) {
Add(item);
}
} finally {
RaiseListChangedEvents = oldRaise;
ResetBindings();
}
}