У нас есть приложение WPF с DataGrid внутри ListView.
private DataTable table_;
Мы делаем групповую или динамическую генерацию столбца (в зависимости от отчета, который мы показываем)
Затем мы делаем запрос и заполняем DataTable построчно, этот запрос может иметь или не иметь данные (это не проблема, ожидается пустая сетка). Мы устанавливаем ItemsSource ListView в DefaultView DataTable.
lv.ItemsSource = table_.DefaultView;
Затем мы (смотря на использование приложения пользователем, устанавливаем сортировку в столбце) Метод сортировки ниже:
private void Sort(string sortBy, ListSortDirection direction)
{
ICollectionView dataView = CollectionViewSource.GetDefaultView(lv.ItemsSource);
dataView.SortDescriptions.Clear();
var sd = new SortDescription(sortBy, direction);
dataView.SortDescriptions.Add(sd);
dataView.Refresh();
}
В сценарии Zero DataTable rows сортировка не «держится»? и если мы динамически добавляем строки, они не будут отсортированы.
Если в DataTable есть хотя бы 1 строка при применении сортировки, и мы динамически добавляем строки в DataTable, строки отсортированы правильно.
Я создал отдельное приложение, которое копирует это...
Это раздражает, и я могу добавить проверку, чтобы увидеть, была ли DataTable пустой, и повторно применить сортировку...
Кто-нибудь знает, что здесь происходит, и я делаю что-то не так?
К вашему сведению. На основании этого мы взяли данные из MSDN: http://msdn.microsoft.com/en-us/library/ms745786.aspx
Обновление:
сортировка не «удерживает» означает, что ICollectionView.SortDescriptions имеет SortDescription, но не сортирует данные по мере их добавления, опять же, только если в базовой DataTable нет строк, если есть строки при добавлении SortDescription, тогда все отлично получается~