BindingList <T>.Sort () для поведения как Список <T>.Sort ()

Из списка рассылки git , вот способ получить список хэшей коммитов для тегов с автоматической разыменовкой для аннотированных тегов:

git for-each-ref --format='%(if)%(*objectname)%(then)%(*objectname)%(else)%(objectname)%(end) %(refname)' refs/tags

21
задан Community 23 May 2017 в 10:30
поделиться

1 ответ

Эмуляция свойства только для сортировки, вероятно, излишняя. Первое, на что стоит обратить внимание, это Comparer .Default . Однако может оказаться, что проще всего:

  • извлечь данные в List или аналогичным образом
  • отсортировать извлеченные данные
  • отключить уведомления
  • перезагрузить данные
  • повторно включить уведомления
  • отправить сообщение «сброса»

кстати, вы также должны отключить уведомления во время существующей сортировки.

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();
    }    
}
16
ответ дан 29 November 2019 в 21:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: