Приветствую всех, увы попытки найти 'велосипеды' в гугле закончились безрезультатно. Проблема такова:
У меня есть
public static DataTable DataTableAccounts { get; set; }
Который я получаю с БД
Чтоб впервые отобразить его в своем DataGrid я делаю так:
DataGridAccounts.ItemsSource = DataTableAccounts.DefaultView;
Потом я начинаю проводить 'некие манипуляции' с DataTableAccounts и чтоб отобразить измененную версию, я использую костыль:
DataGridAccounts.ItemsSource = null;
DataGridAccounts.ItemsSource = DataTableAccounts.DefaultView;
Все работает отлично, НО обновляю довольно часто, примерно раза 2 в сек. а DataTableAccounts большой (1000 рядов) Поэтому у меня все во фризах.
Вопрос такой: Как асинхронно (либо с помощью других триксов) обновлять DataGrid без фризов?
P.S. Я пытался и через Binding в разметке, но тогда ничего не обновляется=)
Ну по поводу фризов это логично. Когда систему заставляют перерисовываться два раза в секунду, для не самого быстрого грида это напряжно. Отсюда текущий вариант реализации будет тормозить в любом случае. Варианты решения: для текущей ситуации надо проверить что включена виртуализация ячеек у грида: EnableRowVirtualization="True", данное позволяет перерисовывать только отображаемые ячейки, скорее всего это поможет. В противном случае (да и вообще если делать по человечески)) придется думать как уменьшить число обновлений страницы. А вот тут без общего кода (как проходят манипуляции) ничего не сделать. Но общую направленность могу подсказать. ItemSource привязывает грид к коллекции. Соответсвенно при изменении коллекции меняются значения грида. Проблема в том, что метод: DefaultView, каждый раз генерирует новую, автономную, коллекцию, которая не связанна с основными данными. Следовательно надо сделать общую коллекцию, привязать к ней грид, и в коде редактировать(!) эту коллекцию). Жизнь станет проще.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Всем доброго времени сутокМоя проблема заключается в следующем, как реализовать в WPF переключение между страницами используя MVVM
Как сделать замену(и добавление) частей страницы с помощью razor?